Программа редактирования положения размеров аналогично стандартной DIMSPACE
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Программа редактирования положения размеров аналогично стандартной DIMSPACE

Программа редактирования положения размеров аналогично стандартной DIMSPACE

Ответ
Поиск в этой теме
Непрочитано 08.09.2009, 16:58 #1
Программа редактирования положения размеров аналогично стандартной DIMSPACE
tov
 
Регистрация: 19.08.2009
Сообщений: 19

Работаю в AutoCAD 2009 Версия C.56.0 (UNICODE)(возможно дело в самом акаде. пробовал на 2010 работает нормально перейти на него не могу не работает с механикс)

При выполнение команды DIMSPACE размеры выставляются в зависимости не от длины(а мне надо чтобы меньший размер был ближе к контуру а больший дальше) а в зависимости от положения относительно контура "ручек размера"(ручка первые 2 точки указываемые при простановке размера) чью ручка выше тот размер и выше
Картинка прилогается

Дополнение необходимо чтобы растановка по Авто происходила с учетом Глобального масштаба размеров(Dimscale) и чтобы значение Dimscale присваивалось всем размерам относительно исходного.

Может кто написать такую программу?

Миниатюры
Нажмите на изображение для увеличения
Название: dimspace12.png
Просмотров: 148
Размер:	36.3 Кб
ID:	25633  

Просмотров: 4667
 
Непрочитано 08.09.2009, 17:12
#2
zenon

Остекляем!!! Алюминим!!!
 
Регистрация: 21.02.2005
Москва
Сообщений: 3,924
<phrase 1=


дык вроде повторное применение команды DIMSPACE все правильно ставит
__________________
Мы можем делать быстро, качественно и недорого, выбирайте любые 2 условия.:search:
zenon вне форума  
 
Автор темы   Непрочитано 09.09.2009, 10:28
#3
tov


 
Регистрация: 19.08.2009
Сообщений: 19


к сожелению это не повторное применение команды Dimspace, а ручное перемещение размерных линий
tov вне форума  
 
Непрочитано 09.09.2009, 10:45
#4
zenon

Остекляем!!! Алюминим!!!
 
Регистрация: 21.02.2005
Москва
Сообщений: 3,924
<phrase 1=


tov, пост #2 внимательно читал?
__________________
Мы можем делать быстро, качественно и недорого, выбирайте любые 2 условия.:search:
zenon вне форума  
 
Автор темы   Непрочитано 10.09.2009, 10:14
#5
tov


 
Регистрация: 19.08.2009
Сообщений: 19


zenon спасибо вам большое действительно повторное применение команды расставило как надо (не исповедимы пути програмистов) теперь буду читать внимательнее

но остается вопрос
как подружить команду DIMSPACE с Глобальным масштабом размеров(Dimscale) для установки правильного интервала по Авто и чтобы значение Dimscale присваивалось всем размерам относительно исходного.
tov вне форума  
 
Непрочитано 10.09.2009, 10:39
#6
E-degtyarev

Помогаю, кому делать нечего.
 
Регистрация: 27.03.2009
Русская деревня
Сообщений: 394


Цитата:
чтобы значение Dimscale присваивалось всем размерам относительно исходного.
Для этого существует команда '_matchprop.
E-degtyarev вне форума  
 
Автор темы   Непрочитано 10.09.2009, 10:53
#7
tov


 
Регистрация: 19.08.2009
Сообщений: 19


Цитата:
Сообщение от E-degtyarev Посмотреть сообщение
Для этого существует команда '_matchprop.
к сожелению по природе я человек ленивый и хотелось бы чтобы все операции выполнялись по одной кнопке: присвоение всем размерам одинаковых свойств, растановка с учетом глобального масштаба по авто

за команду _matchprop спасибо я с ней знаком
tov вне форума  
 
Непрочитано 14.09.2009, 17:00
#8
E-degtyarev

Помогаю, кому делать нечего.
 
Регистрация: 27.03.2009
Русская деревня
Сообщений: 394


Примененние комманды _dimspace c учетом dimscale:
Код:
[Выделить все]
(defun C:rr ()
(vl-load-com)
  (setq r_i (car (entsel "\nИсходный объект:")))
(setq s_f (vlax-get-property (vlax-ename->vla-object r_i) 'SCALEFACTOR))
  (setq r_d (ssget))
  (command "_.dimspace"
	   r_i
	   r_d
	   ""
	   (* 7 s_f)
  )
  (command "'_matchprop" r_i r_d "")
)

Последний раз редактировалось E-degtyarev, 17.09.2009 в 16:46. Причина: Доработка
E-degtyarev вне форума  
 
Автор темы   Непрочитано 15.09.2009, 10:36
#9
tov


 
Регистрация: 19.08.2009
Сообщений: 19


E-degtyarev спасибо что не оставили тему без своего внимания
установил ваш лисп
поставил на кнопку ^C^C(if (null C:rr)(load "dimspace_dimscale.lsp"));rr; заработало
но есть замечания поправте если не трудно
1. лично для меня Дистанция между размерами величина постоянная и равна 7 аналогично АВТО. можно графически реализовать как у команды dimspace Авто или Ввод Дистанции между размерами, если это сложно то можно в лисп жестко забить размер 7.
2. хотелось бы чтобы после выбора размеров, которые необходимо перенести, им просваивалась величина dimscale равная исходному обьекту т.е. мы обходились бы без команды _matchprop
Спасибо

Поработал с программой расставил размеры. Ставлю новый размер у него значение dimscale как у размеров,которые расставлял перед этим, а хотелось бы чтобы dimscale=1 был для новых.
Потом еще интереснее выполняю команду и получаю

Команда: (if (null C:rr)(load "dimspace_dimscale.lsp"))
nil
Команда: rr
Исходный объект:
Выберите объекты: Противоположный угол: найдено: 2
Выберите объекты:
Дистанция между размерами:11
_.dimspace
Выберите исходный размер:
Выберите размеры для помещения: найдено: 2
Выберите размеры для помещения:
Введите значение или [Авто] <Авто>: 0.000000000000000
Команда: nil
и все размеры на одной линии.... стандартная dimspace работает нормально
Похоже автокад у меня совсем глючный

Последний раз редактировалось tov, 15.09.2009 в 13:29.
tov вне форума  
 
Непрочитано 15.09.2009, 15:03
#10
E-degtyarev

Помогаю, кому делать нечего.
 
Регистрация: 27.03.2009
Русская деревня
Сообщений: 394


Цитата:
^C^C(if (null C:rr)(load "dimspace_dimscale.lsp"));rr;
В некоторых версиях Acada есть такой глюк: если в конце команды (см. циату ) - после rr; поставить пробел то происходит повтор последней комманды но в ручном режиме. Иногда Acad почему-то сам упорно ставит этот пробел не смотря на то, что пользователь его удаляет.
Жесткий размер 7 значительно упростит макрос-ввожу поправку пост 8.
E-degtyarev вне форума  
 
Автор темы   Непрочитано 15.09.2009, 16:08
#11
tov


 
Регистрация: 19.08.2009
Сообщений: 19


мы все ближе к цели
но после применения команды получил интервал = 7 мм, а хотелось бы 7*dimscale
tov вне форума  
 
Непрочитано 15.09.2009, 16:38
#12
E-degtyarev

Помогаю, кому делать нечего.
 
Регистрация: 27.03.2009
Русская деревня
Сообщений: 394


(* 7 (getvar "dimscale"))
- это уже учтено, почему у Вас не работает-не знаю.
E-degtyarev вне форума  
 
Автор темы   Непрочитано 16.09.2009, 10:50
#13
tov


 
Регистрация: 19.08.2009
Сообщений: 19


E-degtyarev пожалуста давай те разберемся почему у меня не работает правильно
после применение команды
Команда: (if (null C:rr)(load "dimspace_dimscale.lsp"))
nil
Команда: rr
Исходный объект:
Выберите объекты: найдено: 1
Выберите объекты:
_.dimspace
Выберите исходный размер:
Выберите размеры для помещения: найдено: 1
Выберите размеры для помещения:
Введите значение или [Авто] <Авто>: 0.000000000000000
Команда:
>>Выберите исходный объект:
Текущие активные настройки: Цвет Слой Типлин Лмасштаб Вес линий Толщина Стиль печати Размер Текст Штриховка Полилиния ВЭкран Таблица Материал Отображение тени Мультивыноска
>>Выберите целевой объект(ы) или [Настройки]:
>>Выберите целевой объект(ы) или [Настройки]:
Команда: nil
и все размеры на одной линии
в соответствии с постом 10 проверил наличие пробела - он отсутствует.


почему
Введите значение или [Авто] <Авто>: 0.000000000000000 я похоже разобрался
создаю новый лист рисую размер в свойствах у него Глобальный масштаб размеров = 1
в командной строке забиваю
Команда: _dimscale
Новое значение DIMSCALE <0.00>:
в настройках размерного стиля
Размещение =---> Масштаб размерных элементов =---> и на выбор
Аннонативный(не выбран)
Масштаб размеров по листу (выбран)
Глобальный масштаб(не выбран значение 0 не активен)
Вот и нашелся этот 0
Поменял на Глобальный масштаб значение активно =1
но проблемы это не решило
пришел к выводу что
Глобальный масштаб размеров который показывается в свойствах размера и параметр DIMSCALE задаваемый через командную строку имеют одностороннюю зависимость
Глобальный масштаб размеров зависит от DIMSCALE
DIMSCALE не зависит от Глобальный масштаба размеров
в программе учитывается значение DIMSCALE а нужно Глобальный масштаб размеров
но
DIMSCALE и Глобальный масштаб размеров это же одно и то же или нет !!!???
имею AutoCAD 2009 Версия C.56.0 (UNICODE) (или он меня имеет???)

Последний раз редактировалось tov, 16.09.2009 в 12:16.
tov вне форума  
 
Непрочитано 16.09.2009, 12:02
#14
E-degtyarev

Помогаю, кому делать нечего.
 
Регистрация: 27.03.2009
Русская деревня
Сообщений: 394


У меня в 2008-м ACADe все нормально, т.е. вместо длинной цепочки нулей - значащая цифра. Вероятно в 2009-й версии команда _dimspace несколько переработана, проверить это не могу. Попробуй сам прогнать вручную _dimspace и изучи запросы в ком. строке.
Возможно какая-то ошибка в записи выражения:
(* 7 (getvar "dimscale"))
А вообще-то "Гуру" сайта не рекомендуют использовать коммандные методы - мороки много.
E-degtyarev вне форума  
 
Непрочитано 17.09.2009, 16:50
#15
E-degtyarev

Помогаю, кому делать нечего.
 
Регистрация: 27.03.2009
Русская деревня
Сообщений: 394


tov Посмотри в посте 8 доработанный макрос.
Используется не dimscale а глобальный масштабный коэффициент исходного объекта.
E-degtyarev вне форума  
 
Автор темы   Непрочитано 18.09.2009, 08:54
#16
tov


 
Регистрация: 19.08.2009
Сообщений: 19


E-degtyarev СПАСИБО ЗАРАБОТАЛА КНОПОЧКА
а я думал что впосте #13 полную чушь писал
а в 2008 автокаде вы какой лисп используете ?? с dimscale или с глобальный масштабный коэффициент
tov вне форума  
 
Непрочитано 18.09.2009, 10:13
#17
E-degtyarev

Помогаю, кому делать нечего.
 
Регистрация: 27.03.2009
Русская деревня
Сообщений: 394


tov, Этот лисп сделан специально для Вас буквально вчера.
Цель- самообразование. До сих пор я использовал в основном коммандные методы, иногда DXF коды.
А эдесь начал врубаться в в vl-vla-vlax.
В нашей конторе вопрос автоматической расстановки размеров до сих пор не возникал, вероятно специфика работы несколько другая.
Мы эту лиспушку пока не используем.
В нее не мешало бы добавить обработчик ошибок на случай, если пользователь выберет объект не являющийся размером.

Последний раз редактировалось E-degtyarev, 18.09.2009 в 10:30.
E-degtyarev вне форума  
 
Автор темы   Непрочитано 18.09.2009, 10:57
#18
tov


 
Регистрация: 19.08.2009
Сообщений: 19


Еще раз СПАСИБО
буду пользоваться лиспом. пока все устраивает в программе
tov вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Программа редактирования положения размеров аналогично стандартной DIMSPACE

Реклама i


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Фундамент с динамическими нагрузками в Scad Tlelaxu SCAD 9 31.08.2007 10:44
Программы для редактирования размеров? Acad2004. Павлов Андрей AutoCAD 2 04.06.2004 16:10