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

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

Программное создание размерных стилей

Ответ
Поиск в этой теме
Непрочитано 12.09.2005, 09:04
Программное создание размерных стилей
Кулик Алексей aka kpblc
Moderator
 
LISP, C# (ACAD 200[9,12,13,14])
 
С.-Петербург
Регистрация: 25.08.2003
Сообщений: 39,835

Есть небольшая проблема: надо сделать размерный стиль, и внутри него дополнительные определения для размерных стилей на угловые размеры, радиусы и т.п. Через (tblobjname) получены списки настроек, имена, но сделать повторно через (entmake) - естественно, на новом файле, только имя стиля менял,- не получается - возвращается nil.
Я понимаю, что есть некоторые значения dxf-кодов, которые являются обязательными. Какие обязательные, какие нет, мне вычислить не удалось. Поэтому собственно вопрос(ы) - даю несколько, чтобы и мне было понятно, и сразу на ошибки указали:
1. Для задания кодов 5, 6 и 7 (соответствуют dimblk, dimblk1, dimblk2) требуется имя блока - как его получать / задавать? через tblobjname или assoc? Или проще сделать через (setvar)?
2. Для кодов 340, 341 (соответственно dimtxtsty, dimldrblk) требуются уже хэндлы блоков - а к ним как обращаться?
3. Для кодов 371, 372 (соответственно dimlwd, dimlwe) требуются lineweight enum value - а это что за чудо? Для значения "ByLayer" чего надо назначать? А для "ByBlock", 0.25 etc?
---
Идти через (setvar) в данном варианте у меня что-то не получается, подозреваю, что надо использовать ActiveX-функции, но там я как свинья в ананасах, хоть скажите, в какую сторону копать.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Просмотров: 27445
 
Непрочитано 30.06.2008, 16:54
#41
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,991
<phrase 1= Отправить сообщение для VVA с помощью Skype™


Алексей, мне кажется нужно
  • DIMBLK установить в "";
  • DIMBLK1 в "_archtick" (или что там нужно)
  • DIMBLK2 в "_none"
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 30.06.2008, 16:57
#42
Кулик Алексей aka kpblc
Moderator

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


Я пробовал. Не сработало. Не знаю, что тому виной (наверное, я) - вечером попробую провернуть еще разок. На другой ОС, на другой версии...
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 30.06.2008, 17:02
#43
Sleekka

-
 
Регистрация: 24.07.2005
Москва
Сообщений: 1,335


Цитата:
А не получается следующее: попробуй программно создать размерный стиль, в котором отключено создание одной из стрелок.
Сделал может и через пекин, но:
Код:
[Выделить все]
(vl-cmdf "_-insert" "c:\\slcad\\dwg\\_None.dwg")
(vl-cmdf)
(_kpblc-style-create-dimstyle)
вобщем я сделал так. Есс-но файл пустой загнал с нужным именем.
dimtfill - недокументированная, но она отвечает за background mask текста который используется в размерах.
пробивается по тут: http://www.kxcad.net/autodesk/autoca.../d0e138311.htm
но зная ее сделать размерный стиль не получается. Может через вла получится модифицировать это свойство. Книги Полещука Акад2008 под рукой нету - ща пойду искать.
Sleekka вне форума  
 
Непрочитано 30.06.2008, 17:27
#44
Sleekka

-
 
Регистрация: 24.07.2005
Москва
Сообщений: 1,335


УРРРА нашел:
Если кому интересно то dimtfill = 69 группа.
В Книге "Акад 2008" Полещука - переменная есть, группы нету.
Sleekka вне форума  
 
Автор темы   Непрочитано 01.07.2008, 09:19
#45
Кулик Алексей aka kpblc
Moderator

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


наконец-то до меня "дошло".
Надо в описании стиля менять группу 173 с '(173 . 0) на '(173 . 1) - в таком случае допускается использование dimblk1 и dimblk2, а не dimblk. Группы для отсутствующих стрелок надо будет исключать из списка. И потом создавать.
Правда, на код меня не хватило, так что результат наполовину теоретический
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 01.07.2008, 11:34
#46
skkkk


 
Регистрация: 20.03.2008
Сообщений: 2,653


Ну зачем же так расстраиваться? Код, конечно полезный очень уж, но не повод вешать нос....Я вот вообще не врубаюсь и здоров живу Надеюсь, ты не сидел над этим всю ночь?

Последний раз редактировалось skkkk, 28.03.2013 в 23:47.
skkkk вне форума  
 
Автор темы   Непрочитано 01.07.2008, 11:39
#47
Кулик Алексей aka kpblc
Moderator

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


Ну не всю, часа полтора-два где-то потратил. Пока все переменные прошерстил
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 01.07.2008, 12:20
#48
skkkk


 
Регистрация: 20.03.2008
Сообщений: 2,653


А тебя еще может хватить?
skkkk вне форума  
 
Автор темы   Непрочитано 01.07.2008, 14:01
#49
Кулик Алексей aka kpblc
Moderator

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


На что меня должно хватить? На написание кода под твою задачу? Попробую вечером...
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 03.07.2008, 04:36
#50
skkkk


 
Регистрация: 20.03.2008
Сообщений: 2,653


Блин, забыл сразу сказать... Еще бы туда добавить точность 0.0
skkkk вне форума  
 
Непрочитано 10.07.2008, 04:13
#51
skkkk


 
Регистрация: 20.03.2008
Сообщений: 2,653


Не получилось?
skkkk вне форума  
 
Автор темы   Непрочитано 10.07.2008, 04:23
#52
Кулик Алексей aka kpblc
Moderator

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


Код слишком сложный выходит. Сейчас как раз пробую упростить.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 10.07.2008, 04:24
#53
skkkk


 
Регистрация: 20.03.2008
Сообщений: 2,653


как по аське....не мне одному не спится что ли?? Да было бы здорово такую кнопочку....... (мечтательно))))
skkkk вне форума  
 
Непрочитано 06.08.2008, 13:33
#54
Makswell

Инженер-строитель
 
Регистрация: 15.08.2007
Киров
Сообщений: 2,204


Вопрос такой:
В приложенном файле рисунка я провёл такой эксперимент:

Цитата:
_$ (setq a (tblnext "DIMSTYLE" t))
((0 . "DIMSTYLE") (2 . "M-Standard") (70 . 0) (3 . "") (4 . "") (5 . "Oblique") (6 . "") (7 . "") (40 . 1.0) (41 . 1.0) (42 . 1.0) (43 . 1.0) (44 . 0.8) (45 . 0.0) (46 . 0.8) (47 . 0.0) (48 . 0.0) (140 . 2.5) (141 . 2.0) (142 . 0.0) (143 . 0.0393701) (144 . 1.0) (145 . 0.0) (146 . 1.0) (147 . 0.6) (71 . 0) (72 . 0) (73 . 0) (74 . 0) (75 . 0) (76 . 0) (77 . 1) (78 . 1) (170 . 0) (171 . 3) (172 . 1) (173 . 0) (174 . 0) (175 . 0) (176 . 256) (177 . 256) (178 . 256) (270 . 2) (271 . 0) (272 . 0) (273 . 2) (274 . 3) (340 . <Имя объекта: 7eff1ae8>) (275 . 0) (280 . 0) (281 . 0) (282 . 0) (283 . 0) (284 . 8) (285 . 0) (286 . 0) (287 . 4) (288 . 0))

_$ (cdr (assoc 2 (entget (cdr (assoc 340 a)))))
"M-Standard_0"

_$ (setq a (tblnext "DIMSTYLE"))
((0 . "DIMSTYLE") (2 . "Standard") (70 . 0) (3 . "") (4 . "") (5 . "") (6 . "") (7 . "") (40 . 1.0) (41 . 0.18) (42 . 0.0625) (43 . 0.38) (44 . 0.18) (45 . 0.0) (46 . 0.0) (47 . 0.0) (48 . 0.0) (140 . 0.18) (141 . 0.09) (142 . 0.0) (143 . 25.4) (144 . 1.0) (145 . 0.0) (146 . 1.0) (147 . 0.09) (71 . 0) (72 . 0) (73 . 1) (74 . 1) (75 . 0) (76 . 0) (77 . 0) (78 . 0) (170 . 0) (171 . 2) (172 . 0) (173 . 0) (174 . 0) (175 . 0) (176 . 0) (177 . 0) (178 . 0) (270 . 2) (271 . 4) (272 . 4) (273 . 2) (274 . 2) (340 . <Имя объекта: 7eff1ae8>) (275 . 0) (280 . 0) (281 . 0) (282 . 0) (283 . 1) (284 . 0) (285 . 0) (286 . 0) (287 . 3) (288 . 0))

_$ (cdr (assoc 2 (entget (cdr (assoc 340 a)))))
"M-Standard_0"
Ничего не понимаю, ведь последнее выражение должно было вернуть "Standard" - имя тектового стиля, который соответствует размерному стилю "Standard".

Где я туплю?
Вложения
Тип файла: dwg
DWG 2004
Чертеж.dwg (43.1 Кб, 932 просмотров)
Makswell вне форума  
 
Автор темы   Непрочитано 06.08.2008, 13:41
#55
Кулик Алексей aka kpblc
Moderator

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


Обрати внимание - ты ж получаешь 340 группу, а у тебя и в первом, и во втором случае там лежит одно и то же.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 06.08.2008, 14:06
#56
Alaspher


 
Регистрация: 11.10.2004
e•burg
Сообщений: 755


Цитата:
Сообщение от Makswell Посмотреть сообщение
последнее выражение должно было вернуть "Standard" - имя тектового стиля, который соответствует размерному стилю "Standard".
Не совсем так - текстовому стилю использованому в размерном стиле "Standard", он...
Alaspher вне форума  
 
Непрочитано 06.08.2008, 14:40
#57
Makswell

Инженер-строитель
 
Регистрация: 15.08.2007
Киров
Сообщений: 2,204


Кулик Алексей aka kpblc, точно одно и тоже: (340 . <Имя объекта: 7eff1ae8>)
Так что же это?

В DXF-ref.. написано: 340 - DIMTXSTY (handle of referenced STYLE)
И вот как раз DIMTXSTY для каждого размерного стиля разное.

Alaspher, извини, что-то не допонял. Можно поподробней.

ЗЫ Вообще-то я уже решил проблему, получаю текстовый стиль через tblobjname. Просто хочется для себя прояснить этот момент.
Makswell вне форума  
 
Автор темы   Непрочитано 06.08.2008, 14:54
#58
Кулик Алексей aka kpblc
Moderator

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


Makswell, ну кто ж тебе виноват, что у тебя такой дамп получился...
Код:
[Выделить все]
_$ (entget (cdr (assoc 340 (entget (TBLOBJNAME "dimstyle" "standard")))))
((-1 . <Entity name: 7ef7cc88>) (0 . "STYLE") (330 . <Entity name: 7ef7cc18>) (5 . "11") (100 . "AcDbSymbolTableRecord") (100 . "AcDbTextStyleTableRecord") (2 . "Standard") (70 . 0) (40 . 0.0) (41 . 1.0) (50 . 0.0) (71 . 0) (42 . 2.5) (3 . "txt") (4 . ""))
_$ (entget (cdr (assoc 340 (entget (TBLOBJNAME "dimstyle" "M-Standard")))))
((-1 . <Entity name: 7ef7e2e8>) (0 . "STYLE") (330 . <Entity name: 7ef7cc18>) (5 . "FBD") (100 . "AcDbSymbolTableRecord") (100 . "AcDbTextStyleTableRecord") (2 . "M-Standard_0") (70 . 0) (40 . 0.0) (41 . 1.0) (50 . 0.0) (71 . 0) (42 . 2.5) (3 . "Gost2304.ttf") (4 . ""))
Переделывая твой код, надо получать не (tblnext), а, наверное, так:
Код:
[Выделить все]
_$ (tblobjname "dimstyle" (cdr (assoc 2 (tblnext "dimstyle" t))))
<Entity name: 7ef7e0b0>
_$ (tblobjname "dimstyle" (cdr (assoc 2 (tblnext "dimstyle"))))
<Entity name: 7ef7e1d8>
И обрабатывать уже полученные значения.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 06.08.2008, 15:31
#59
Alaspher


 
Регистрация: 11.10.2004
e•burg
Сообщений: 755


Цитата:
Сообщение от Makswell Посмотреть сообщение
Alaspher, извини, что-то не допонял. Можно поподробней.

ЗЫ Вообще-то я уже решил проблему, получаю текстовый стиль через tblobjname. Просто хочется для себя прояснить этот момент.
Да, действительно - есть косяк, при получении DXF через tblnext возвращается текстовый стиль (и ещё многое другое) не от того размерного стиля, имя которого указано в группе 2, а от текущего. Поскольку почти не пользуюсь tblnext, то и не знал об этом.

Вариант с tblobjname - всегда надёжнее.
Alaspher вне форума  
 
Непрочитано 17.08.2008, 04:15
#60
skkkk


 
Регистрация: 20.03.2008
Сообщений: 2,653


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Код слишком сложный выходит. Сейчас как раз пробую упростить.
Алексей, а сложный код можешь поместить? Мне вобщем-то без разницы на простоту. Только это если без проблем. Если с ними, то фиг с ним
skkkk вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Программное создание размерных стилей

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

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