LISP - wielolinia odniesienia


Recommended Posts

jak dodać LISPEM wielolinie odniesienia w Zwcadzie

 

prubuję jakoś tak ale sie nie da

 

Command: (setq *doc* (vla-get-activedocument (vlax-get-acad-object)))
#<VLA-OBJECT IZcadDocument 0438d660>

Command: (setq mldrdict (vla-item (vla-get-dictionaries *doc*)
"ACAD_MLEADERSTYLE")) #<VLA-OBJECT IZcadDictionary 0f509abc>

Command: (setq newldrstyle (vlax-invoke mldrdict 'addobject "Arrow_Mleader"
"AcDbMLeaderStyle")) ; error: Wystąpił wyjątek

 

 

tutaj cały przykład: http://forums.autodesk.com/t5/autocad-2007-2008-2009/loading-multileader-style/td-p/2248691

Link to comment
Share on other sites

Obawiam się że się nie da. Dla twoich wywołań (bez ostatniego) sprawdź:

(entget (vlax-vla-object->ename (vla-item mldrdict 0)))

Wywołanie to zwraca coś podobnego do tego:

((-1 . <Entity name: 94c8760>) (0 . "ACAD_PROXY_OBJECT") (5 . "E1") (102 . "{ACAD_REACTORS") 
(330 . <Entity name: 94c8870>) (102 . "}") (100 . "AcDbMLeaderStyle") (90 . 499.000) (91 . 0.000000) 
(95 . 0.000000) (70 . 0) (94 . 0.000000))
W AutoCAD-zie to samo wywołanie zwraca:
((-1 . <Nazwa elementu: 7ff663004ce0>) (0 . "MLEADERSTYLE") (5 . "25E") (102 . "{ACAD_REACTORS") 
(330 . <Nazwa elementu: 7ff663004150>) (102 . "}") (330 . <Nazwa elementu: 7ff663004150>) 
(100 . "AcDbMLeaderStyle") (179 . 2) (170 . 2) (171 . 1) (172 . 0) (90 . 2) (40 . 0.0) (41 . 0.0) 
(173 . 1) (91 . -1073741824) (340 . <Nazwa elementu: 0>) (92 . -2) (290 . 1) (42 . 0.4) (291 . 1) 
(43 . 2.0) (3 . "") (341 . <Nazwa elementu: 0>) (44 . 0.18) (300 . "") (342 . <Nazwa elementu: 0>) 
(174 . 7) (178 . 6) (175 . 0) (176 . 0) (93 . -1073741824) (45 . 0.2) (292 . 0) (297 . 0) (46 . 5.0) 
(343 . <Nazwa elementu: 0>) (94 . -1073741824) (47 . 1.0) (49 . 1.0) (140 . 1.0) (293 . 1) (141 . 0.0)
(294 . 1) (177 . 0) (142 . 1.0) (295 . 0) (296 . 0) (143 . 0.125) (271 . 0) 
(272 . 9) (273 . 9) (298 . 1))
 
Wynika z tego że w ZwCAD-zie, nie ma obiektu typu "MLEADERSTYLE". Obsługuje go uniwersalny obiekt zastępczy "ACAD_PROXY_OBJECT". Domyślam się zatem że ZwCAD obłuży z LISP-a style wielolinii, za jakiś czas dopiero (wątpię czy będzie to 2017).
Link to comment
Share on other sites

W Zwcadzie 2015+ zwróciło mi prawie to samo co w Autocadzie:

((-1 . <Entity name: -170fb8>) (0 . "MLEADERSTYLE") (5 . "E1") (102 .
"{ACAD_REACTORS") (330 . <Entity name: -170fd0>) (102 . "}") (330 . <Entity
name: -170fd0>) (100 . "AcDbMLeaderStyle") (179 . 2) (170 . 2) (171 . 1) (172 .
0) (90 . 2) (40 . 0.0) (41 . 0.0) (173 . 1) (91 . -1056964608) (340 . <Entity
name: -172360>) (92 . -2) (290 . 1) (42 . 2.0) (291 . 1) (43 . 8.0) (3 .
"Standard") (341 . <Entity name: 0>) (44 . 4.0) (300 . "") (342 . <Entity name:
-172378>) (174 . 1) (178 . 1) (175 . 1) (176 . 0) (93 . -1056964608) (45 . 4.0)
(292 . 0) (297 . 0) (46 . 0.18) (343 . <Entity name: 0>) (94 . -1056964608) (47
. 1.0) (49 . 1.0) (140 . 1.0) (293 . 1) (141 . 0.0) (294 . 1) (177 . 0) (142 .
1.0) (295 . 0) (296 . 0) (143 . 3.75) (271 . 0) (272 . 9) (273 . 9) (298 . 0))

Jest może w miarę prosty sposób na dodanie stylów wielolinii do pliku dwg. Chciałbym dodać przykładowo takie style jak w załączonym pliku (chciałbym uniknąć wstawiania tego pliku jako blok i potem usuwania go).

MLEADERSTYLE.dwg

Link to comment
Share on other sites

W ZWCAD+ 2015  można utworzyć styl multilinii korzystając z funkcji entmakex:

(defun AddMLeaderStyle ( stylename data / dict item )
(cond
( (not (setq dict (cdr (assoc -1 (dictsearch (namedobjdict) "ACAD_MLEADERSTYLE")))))
nil
)
( (setq item (dictsearch dict stylename))
(entmod (cons (assoc -1 item) data))
)
( (setq item (entmakex data))
(dictadd dict stylename item)
)
)
)


(AddMLeaderStyle "test"
'(
(0 . "MLEADERSTYLE")
(100 . "AcDbMLeaderStyle")
(179 . 2)
(170 . 2)
(171 . 1)
(172 . 0)
(90 . 2)
(40 . 0.0)
(41 . 0.0)
(173 . 1)
(91 . -1023410173)
(92 . -2)
(290 . 1)
(42 . 1.0)
(291 . 1)
(43 . 1.0)
(3 . "Standard")
(44 . 1.0)
(300 . "")
(174 . 1)
(178 . 1)
(175 . 1)
(176 . 0)
(93 . -1073741824)
(45 . 1.0)
(292 . 0)
(297 . 0)
(46 . 0.18)
(94 . -1056964608)
(47 . 1.0)
(49 . 1.0)
(140 . 1.0)
(293 . 1)
(141 . 0.0)
(294 . 1)
(177 . 0)
(142 . 1.0)
(295 . 0)
(296 . 0)
(143 . 1.0)
(271 . 0)
(272 . 9)
(273 . 9)
)
)

Znaczenie poszczególnych kodów DXF opisane jest np tutaj:
http://help.autodesk.com/view/ACD/2016/ENU/?guid=GUID-0E489B69-17A4-4439-8505-9DCE032100B4

 

 

 


Postaram się dowiedzieć jak dodać style w ZWCAD Classic i jakie są plany odnośnie ZWCAD 2017

AddMLeaderStyle.lsp

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...