Тема: Программное создание и загрузка стиля для MLINE ?

Добрый день !
"_.MLSTYLE" не устраивает !
Может кто-то не откажет в любезности привести
конкретный пример создания некого стиля для
МУЛЬТИЛИНИИ средствами autolisp или VL,
чтобы сразу после загрузки можно было назначить его
через "CMLSTYLE".
Вообще нужна конструкция из трёх линий, где средняя
другого цвета и другого стиля без отступа, а крайние
с отступом +0,5 и -0,5 ( рисуем трубопровод с осевой
линией ).

Re: Программное создание и загрузка стиля для MLINE ?

Готовая прога для рисования трубопроводов
http://cadhlp.kulichki.com/prog4/hvacduct.zip
не подойдет?

Re: Программное создание и загрузка стиля для MLINE ?

А создать лиспом....
надо разобраться со структурой файла Acad.mnl Инаписать свой
ну а потом подгрузить - это все теоретически

Re: Программное создание и загрузка стиля для MLINE ?

В принципе со структурой ACAD.mln всё ясно,
а как автоматически подгрузить файл в с описанием стиля в начале сеанса ACAD если это не ACAD.mln, а ***.mln ?

Re: Программное создание и загрузка стиля для MLINE ?

А в ответ - тишина ...
И всётаки, может у кого-нибудь есть  соображения по теме ?

Re: Программное создание и загрузка стиля для MLINE ?

Стили мультилиний сохраняются в словаре (dictionary) "ACAD_MLINESTYLE" среди других словарей.

(setq список_словарей (entget (namedobjdict)))

возвращает

((-1 . <Entity name: 40060c60>) (0 . "DICTIONARY")
 (330 . <Entity name: 0>) (5 . "C") (100 . "AcDbDictionary")
 (280 . ) (281 . 1)
 (3 . "ACAD_GROUP") (350 . <Entity name: 40060c68>)
 (3 . "ACAD_LAYOUT") (350 . <Entity name: 40060cd0>)
 [b](3 . "ACAD_MLINESTYLE") (350 . <Entity name: 40060cb8>)[/b]
 (3 . "ACAD_PLOTSETTINGS") (350 . <Entity name: 40060cc8>)
 (3 . "ACAD_PLOTSTYLENAME") (350 . <Entity name: 40060c70>))

В группе 350 - ссылка на библиотеку MLINESTYLE

(setq библиотека (entget (cdr (assoc 350 (cdr (member (cons 3 "ACAD_MLINESTYLE") список_словарей))))))

возвращает

((-1 . <Entity name: 40060cb8>) (0 . "DICTIONARY") (5 . "17")
 (102 . "{ACAD_REACTORS") (330 . <Entity name: 40060c60>) (102 . "}")
 (330 . <Entity name: 40060c60>) (100 . "AcDbDictionary")
 (280 . 0) (281 . 1)
 [b](3 . "Standard") (350 . <Entity name: 40060cc0>)[/b])

В группе 350 - ссылка на стиль MLINESTYLE

(setq стиль (entget (cdr (assoc 350 (cdr (member (cons 3 "Standard") библиотека))))))

возвращает

((-1 . <Entity name: 40060cc0>) (0 . "MLINESTYLE") (5 . "18")
 (102 . "{ACAD_REACTORS") (330 . <Entity name: 40060cb8>) (102 . "}")
 (330 . <Entity name: 40060cb8>) (100 . "AcDbMlineStyle")
 (2 . "STANDARD") (70 . 0) (3 . "")
 (62 . 256) (51 . 1.5708) (52 . 1.5708) (71 . 2) (49 . 0.5)
 (62 . 256) (6 . "BYLAYER") (49 . -0.5) (62 . 256) (6 . "BYLAYER"))

Для меньших трудозатрат новый стиль "создается" способом перемены имени существующего стиля

(setq новый_стиль (subst (cons 2 "MY_MLINE")(assoc 2 стиль) стиль))

Создается новый объект с данными нового стиля

(setq новый_объект (entmakex новый_стиль))

Новый объект помещается в библиотеку

(dictadd библиотека "MY_MLINE" новый_объект)

Можно, конечно, новый стиль создавать "с чистого листа".

Re: Программное создание и загрузка стиля для MLINE ?

Извиняюсь, символ библиотека представляет данные словаря ACAD_MLINESTYLE, а при помещении в библиотеку следует указывать сам объект

(dictadd (cdr (assoc -1 библиотека)) "MY_MLINE" новый_объект)

после чего новый стиль можно использовать.

Re: Программное создание и загрузка стиля для MLINE ?

Огромное спасибо, VH !