多导导出问题
嘿,伙计们,第一次发帖。这个论坛在过去帮助了我,我完全撞到了墙。我的问题是多重领导。我转换了很多。dwg文件。shp文件,并且无论如何都无法直接导出多重引线。
所以我一直在尝试构建一些LISP代码,将多重引线的文本放置在它所指向的准确位置(不需要漂亮,只需要文本的对齐点是正确的位置)。
这远远超出了我的专业水平。任何帮助都是非常合适的
(或者,如果有一个更简单的解决方案隐藏在某处,那就太好了!) 你试过引爆它们吗? 我假设explode选项对您有效,但如果不起作用,我决定尝试一下。这可能并不优雅,但我相信它可以帮助你开始。我只测试了一点点。我对这些评论有点过火,但我想这不会有什么害处。
;MLeaderTest
(defun c:mltest ( / ss i e p1 height angle contents )
(setq ss (ssget '(( 0 . "MULTILEADER" )))) ;get selection of multileaders
(setq i 0) ;set loop index
(repeat (sslength ss) ;loop through each selected entity
(setq e (ssname ss i)) ;get current entity
(setq p1 (cdr (assoc 110 (entget e)))) ;set p1 to the point coordinates that the leader is pointing to
(setq height (cdr (assoc 41 (entget e)))) ;set text height
(setq angle 0) ;this defaults the rotation angle to be 0
(setq contents (cdr (assoc 304 (entget e)))) ;get text contents
(command "text" p1 height angle contents) ;create a new text object based on gathered info
(command "erase" e "") ;erase Mleader entity
(setq i (1+ i)) ;increment index
)
(princ)
) 爆炸不起作用。它将文本放置在作为多重引线一部分时的精确位置。
感谢benhubel的帮助!以及评论(对初学者很有用)。
奇怪的是,它在我当前的绘图中,可能有一半的多重引线上都能完美地工作。另一半被放置在非常不一致的地方,有时离多重领导本身很远。无法找出导致不一致的原因。
我已经附上了我的测试。dwg以便您可以查看。
领导测试。图纸 我还在学习,所以我不完全确定原因是什么,但这似乎是放置引线后移动引线点的结果。我打赌我使用了错误的assoc代码,因为它在我的初始测试工作。我看看能不能找到解决办法。 在Lisp例程中调用的命令将遵循OSMODE设置。要避免不需要的对象捕捉,可以使用:
(command "text" "_non" p1 height angle contents) 像Roy_043但不需要
(setq oldsnap (getvar 'osmode))
(setvar 'osmode 0)
... your code
(setvar 'osmode oldsnap)
这是一个快捷方式。。星期五快乐!
(defun c:foo (/ r o n)
(if (setq n (ssget ":L" '((0 . "MULTILEADER"))))
(foreach x (vl-remove-if 'listp (mapcar 'cadr (ssnamex n)))
(setq o (vlax-ename->vla-object x))
(setq r (vlax-invoke o 'getleaderlinevertices 0))
(if (entmakex (list '(0 . "TEXT")
'(100 . "AcDbEntity")
'(67 . 0)
(cons 8 (vla-get-layer o))
'(100 . "AcDbText")
(list 10 (car r) (cadr r) (caddr r))
(cons 40 (vla-get-textheight o))
(cons 1 (vla-get-textstring o))
(cons 50 (vla-get-textrotation o))
'(41 . 1.0)
'(51 . 0.0)
(cons 7 (vla-get-textstylename o))
'(71 . 0)
'(72 . 0)
'(11 0.0 0.0 0.0)
'(100 . "AcDbText")
'(73 . 0)
)
)
(entdel x)
)
)
)
(princ)
)
(vl-load-com) ronjonp我不知道那一半代码是什么意思,但它工作得绝对漂亮。
我真的很感谢大家的帮助,你们让我的导出过程变得更加灵活,再加上我学到了更多的LISP语言。赢,赢。
大家星期五快乐
很乐意帮忙。
页:
[1]