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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Переключить масштаб СПДС

Переключить масштаб СПДС

Ответ
Поиск в этой теме
Непрочитано 21.11.2010, 01:28 #1
Переключить масштаб СПДС
Mozgunov
 
Начинающий проектировщик
 
Санкт-Петербург
Регистрация: 07.02.2008
Сообщений: 443

Вопрос1: Я прорисовываю элемент 1:1 и образмериваю его создавая размер при помощи функции entmake. Размер прорисовывается в стиле СПДС 1:100 и его (масштаб СПДС) после прорисовки приходиться вручную переключать. Не подскажите можно ли при создании размера как-то переключить масштаб СПДС?
Вопрос2: Алексей (kpblk) пользуюсь вашей функцией для установки блока засечек примитиву. Что-то не получается заполнить 342,343,344 группы. При вызове функции (_lispru-get-or-create-dimblock "_DOT") возвращается nil вместо имени блока?

Последний раз редактировалось Mozgunov, 21.11.2010 в 12:31.
Просмотров: 10694
 
Непрочитано 21.11.2010, 20:50
#2
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787


При создании размера ему можно задать используемый размерный стиль. Ставь свой, а не используй "по умолчанию". Ну и дополнительно - dimscale проверяй.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 21.11.2010, 21:14
#3
Mozgunov

Начинающий проектировщик
 
Регистрация: 07.02.2008
Санкт-Петербург
Сообщений: 443
<phrase 1=


Так я устанавливаю собственному размерному стилию (cons 40 1.0). Даже если dimscale=1, то после прорисовки вроде бы всё нормально, но после регенерации размер приобретает масштаб СПДС, который стоял в окошке "Масштаб" во время прорисовки. А мне нужно прорисовать в "СПДСовском" масштабе 1:1. То есть в момент прорисовки как-то изменить его.
Добавлено: Сейчас поменял dimscale на единицу. Вроде заработало. А про _lispru-get-or-create-dimblock "_DOT". Почему она возвращает nil не подскажите? А то у меня ошибка формировании группы dxf (342 nil) . Bad неверная группа ( Хотя блок в чертёж добавляется.

Хотя нет! Опять после регенерации 100й масштаб присваивается. Хотя при прорисовки сделал (setvar "dimscale" 1.0)

Последний раз редактировалось Mozgunov, 21.11.2010 в 21:35.
Mozgunov вне форума  
 
Непрочитано 21.11.2010, 22:29
#4
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787


Один из вариантов:
Код:
[Выделить все]
(vl-load-com)

(defun test-dim (/ adoc pt1 pt2)
  (vla-startundomark (setq adoc (vla-get-activedocument (vlax-get-acad-object))))
  (setq dim (vla-adddimrotated
              (vla-get-modelspace adoc)
              (vlax-3d-point (setq pt1 (getpoint "\nBase point 1 : ")))
              (vlax-3d-point (setq pt2 (getpoint "\nBase point 2 : ")))
              (vlax-3d-point (getpoint "\nDimLine point : "))
              (angle pt1 pt2)
              ) ;_ end of vla-adddimrotated
        ) ;_ end of setq
  (vla-put-stylename dim "TestDimStyle") ; Здесь ставишь имя своего стиля
  (vla-put-scalefactor dim 1.)
  (vla-endundomark adoc)
  (princ)
  ) ;_ end of defun
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 21.11.2010, 22:45
#5
Mozgunov

Начинающий проектировщик
 
Регистрация: 07.02.2008
Санкт-Петербург
Сообщений: 443
<phrase 1=


нарисовал test-dim размер. Сделал регенерацию и он опять превратился в размер в масштабе 1:100. Попробуйте сами. Нарисуйте вашей функцией размер и тут же после прорисовки сделайте регенерацию модели.
Mozgunov вне форума  
 
Непрочитано 21.11.2010, 22:47
#6
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787


У меня на домашней машине не установлен СПДС GraphiCS. И, вдобавок, не знаю версии ни СПДС, ни AutoCAD.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 21.11.2010, 23:08
#7
Mozgunov

Начинающий проектировщик
 
Регистрация: 07.02.2008
Санкт-Петербург
Сообщений: 443
<phrase 1=


Autocad 2008 СПДС 5. После прорисовки выбираю размер. Смотрю на панель СПДС он пишет что размер в масштабе 1:1. Тут же делаю регенерацию и этот же размер становиться в 1:100. Сразу-то после прорисовки всё нормально... Значит дело скорее всего в регенерации...
Mozgunov вне форума  
 
Непрочитано 21.11.2010, 23:18
#8
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787


Или в настройках СПДС GraphiCS. Кстати, стиль для размера какой установлен в свойствах?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 21.11.2010, 23:25
#9
Mozgunov

Начинающий проектировщик
 
Регистрация: 07.02.2008
Санкт-Петербург
Сообщений: 443
<phrase 1=


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Кстати, стиль для размера какой установлен в свойствах?
Тот стиль который я сам создаю.
Код:
[Выделить все]
(entmakex (list
            (cons 0 "DIMSTYLE")
            (cons 100 "AcDbSymbolTableRecord")
            (cons 100 "AcDbDimStyleTableRecord")
            (cons 2 "Detali")
            (cons 70 0)
            (cons 40 1.0) ;dimscale 
            (cons 41 2.5) ;dimsz    
            (cons 42 0.625) ;dimexo   
            (cons 43 3.75) ;dimdli    
            (cons 44 1.25) ;dimexe    
            (cons 45 0.5) ;dimrnd   
            (cons 46 0.0) ;dimdle   
            (cons 140 2.5) ;dimtxt    
            (cons 141 -2.5) ;dimcen   
            (cons 143 0.005) ;dimaltf 
            (cons 145 0) ;dimtvp
            (cons 147 0.5) ;dimgap    
            (cons 72 0) ;dimlim
            (cons 73 0) ;dimtih   
            (cons 74 0) ;dimtoh   
            (cons 77 1) ;dimtad   
            (cons 78 8) ;dimzin   
            (cons 79 2) ;dimazin  
            (cons 170 0) ;dimalt
            (cons 172 1) ;dimtofl 
            (cons 173 0) ;dimsah    
            (cons 174 0) ;dimtix
            (cons 175 1) ;dimsoxd
            (cons 176 0) ;dimclrd
            (cons 177 0) ;dimclre
            (cons 178 0) ;dimclrt
            (cons 179 1) ;dimadec
            (cons 271 0) ;dimdec    
            (cons 272 0) ;dimtdec 
            (cons 275 1) ;dimaunit
            (cons 277 2) ;dimlunit
            (cons 278 44) ;dimdsep  
            (cons 279 0) ;dimtmove
            (cons 280 0) ;dimjust
            (cons 281 0) ;dimsd1
            (cons 282 0) ;dimsd2
            (cons 283 0) ;dimtolj
            (cons 284 8) ;dimtzin
            (cons 288 0) ;dimupt
            (cons 340 (tblobjname "style" (getvar "textstyle"))) ;dimtxtsty 
            (cons 371 -2) ;dimlwd
            (cons 372 -2) ;dimlwe
            ) ;_ end of list
          ) ;_ end of setq

А в entmake размера '(3 . "Detali")
Mozgunov вне форума  
 
Непрочитано 22.11.2010, 00:08
#10
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787


Ну тогда остаются только настройки самой СПДС...
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 22.11.2010, 00:29
#11
Mozgunov

Начинающий проектировщик
 
Регистрация: 07.02.2008
Санкт-Петербург
Сообщений: 443
<phrase 1=


Может быть... Я что-то там ничего похожего не нашёл. Да и странно что-то всё это очень. Ну если например нарисовать размер с dimscale 1, а в это время будет стоять на панельке СПДС 1:100, пока всё нормально, размеры 1:1 а затем переключить на панельке СПДС масштаб на 1:1 (при не выделенных размерах, т.е. просто поменять глобальный масштаб) и сделать регенерацию, то тоже всё будет прорисовано в масштабе стиля, т.е. 1:1. Значит во время регенерации имеет значение глобального масштаба СПДС. Т.е. именно перед тем как набрать в командной строке "re" нужно выставить СПДС в масштаб 1:1, тогда проблемы не будет. Непонятно конечно написал, но как-то так.
Mozgunov вне форума  
 
Непрочитано 22.11.2010, 05:55
#12
Krieger

инженер (КМ)
 
Регистрация: 30.10.2004
Красноярск
Сообщений: 3,825


Насколько я помню (давно не использую СПДС), то масштаб СПДС равен переменной dimscale. Поэтому размерный стиль должен быть с dimscale=1, а при прорисовке размера для него нужно установить dimscale равный СПДС-овскому (читай на текущий dimscale).
Код:
[Выделить все]
 
(cons 40 (getvar "dimscale")) ;dimscale
__________________
Делай хорошо, плохо само получится.
Krieger вне форума  
 
Автор темы   Непрочитано 22.11.2010, 08:35
#13
Mozgunov

Начинающий проектировщик
 
Регистрация: 07.02.2008
Санкт-Петербург
Сообщений: 443
<phrase 1=


Цитата:
Сообщение от Krieger Посмотреть сообщение
Насколько я помню (давно не использую СПДС), то масштаб СПДС равен переменной dimscale.
Да. Должно быть так. Меняю переменную dimscale=0, а масштаб СПДС
остаётся всё равно 1:Х00. Почему он не среагировал на переключение переменной dimscale? Обратная связь есть. Т.е. при переключении масштаба СПДС dimscale меняется.

Цитата:
Сообщение от Krieger Посмотреть сообщение
(cons 40 (getvar "dimscale")) ;dimscale
Да спасибо. Просто нужен размер сразу в конкретном масштабе. Не нужно ничего "считывать"...

Добавлено

Вопрос по другому: "Почему СПДС панель не реагирует на переключение dimscale через командную строку"

Последний раз редактировалось Mozgunov, 22.11.2010 в 14:24.
Mozgunov вне форума  
 
Непрочитано 22.11.2010, 21:34
#14
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787


Потому что масштаб СПДС регулируется не системными переменными. Это изменение масштаба СПДС меняет несколько системных переменных.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 22.11.2010, 21:51
#15
Mozgunov

Начинающий проектировщик
 
Регистрация: 07.02.2008
Санкт-Петербург
Сообщений: 443
<phrase 1=


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Потому что масштаб СПДС регулируется не системными переменными. Это изменение масштаба СПДС меняет несколько системных переменных.
Ясно. Спасибо. Алексей а с моим случаем ничего нельзя придумать? На работу пришёл сегодня, проверил, то же самое. Хотя на работе другая версия СПДС и Автокад 2009? Как-то ведь прорисовывают размеры программно в заданных масштабах?
Mozgunov вне форума  
 
Непрочитано 22.11.2010, 22:26
#16
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787


Блин, ну негде мне взять 5-ю версию СПДС под 2011 64-битный кад! Негде! Настоятельно рекомендую поковыряться с настройками СПДС или попробовать программно создать размер с неактивным размерным стилем в AutoCAD, где СПДС не загружена и demandload = 2.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 22.11.2010, 22:42
#17
Mozgunov

Начинающий проектировщик
 
Регистрация: 07.02.2008
Санкт-Петербург
Сообщений: 443
<phrase 1=


Выгрузил СПДС. Попробовал прорисовать. Всё отлично! Масштаб размеров не скачет. Ну не выгружать же мне при каждой прорисовке СПДС? ))) Да копался я там. Нет там ничего похожего. Спасибо.
Mozgunov вне форума  
 
Непрочитано 23.11.2010, 00:17
#18
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787


Increase Size Decrease Size Create Dimension Programmatically with SPDS GraphCS loaded
http://www.youtube.com/watch?v=riK5umgQv3U
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 23.11.2010, 22:38
#19
Mozgunov

Начинающий проектировщик
 
Регистрация: 07.02.2008
Санкт-Петербург
Сообщений: 443
<phrase 1=


Алексей спасибо большое за видео! Действительно всё работает. Раз 5 с утра смотрел и раз 5 вечером. Вроде у меня всё тоже самое, только не через vla функции всё делаю. Вроде СПДС настройки те же самые. Но что-то не понял я где моя ошибка. Ещё несколько раз посмотрю ролик))) Может найду в чём прикол весь. Ещё вы говорите создаём размерный стиль и оставляем его не активным? Почему не активным? Вы же в нём размер простраиваете?

Добавлено: Всё понял. Если прорисовать размер в другом размерном стиле в ЛЮБОМ масштабе СПДС, а затем назначить стилю свой масштаб, то масштаб размера будет равен масштабу стиля. Только теперь ещё однин вопрос. Если у меня размеры собраны в набор можно как-то для набора установить размерный стиль?

Добавлено: А ну всё я понял. Нужно получить entget примитива и entmod изменить 3 группу у размера. Спасибо большое!

Последний раз редактировалось Mozgunov, 23.11.2010 в 23:40.
Mozgunov вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Переключить масштаб СПДС

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
СПДС GraphiCS: Нет возможности выбрать любой масштаб в панели масштабов Кларисса Вертикальные решения на базе AutoCAD 8 05.03.2012 23:10
Как переключить масштаб в СПДС без помощи мышки? dextron3 Прочее. Программное обеспечение 3 04.01.2010 11:49
Копирование данных для спецификаций из выносок СПДС в таблицу из мтекстов Red Nova Программирование 177 08.12.2008 11:35
СПДС 3.0 меняется масштаб размеров ERN Прочее. Программное обеспечение 3 11.10.2005 08:23