CAD_Noob 发表于 2022-7-5 16:36:35

我的错。。。很抱歉
复制代码时,我错过了WAI子函数。
它正在工作。只是位置有点不合适,
房间号的矩形被留下。

rlx 发表于 2022-7-5 16:41:05

 
 
这对我有点管用。例程假设图形中存在块“Room_Tag”。使用窗口选择mtex,但必须按enter键提交选择(有待改进),然后插入带有属性的block room\u标记并删除MTEXT(但留下多段线,也有待改进)。如果这是您所期望的,那么它不会绘制整个图形,因为这需要一种更复杂的方法,就像我发布链接的路线中使用的方法一样。我可以先选择两个点(getpoint/getcorner),然后在窗口中使用ssget,这样我也可以用多行文字的
 
 
gr.Rlx

rlx 发表于 2022-7-5 16:42:26

 
 
好的,没问题。如果上多行文字中始终存在对齐点(中间或中心,dxf代码11),我可以更好地对齐符号。看看我以后有没有时间,现在要为老板做些工作。。。
 
 
gr.Rlx

rlx 发表于 2022-7-5 16:46:58

 
 
这个应该表现得更好一点:
 
 



(defun c:RoomTag ( / p1 p2 ss tl ip bn old-att-req)
(vl-load-com)
(setq old-att-req (getvar "ATTREQ"))
(princ "\n<<< Select Mtexts >>> ")
(cond
   ((not (and (setq p1 (getpoint "\nSelect 1st corner :"))
       (setq p2 (getcorner p1 "\nSelect 2nd corner :"))))
    (princ "\nNothing selected"))
   ((not (setq ss (ssget "w" p1 p2 '((0 . "MTEXT"))))) (princ "\nNo Mtext's found"))
   ((not (= (sslength ss) 4)) (princ "\nYou must select 4 Mtext's"))
   ((not (tblsearch "block" (setq bn "Room_Tag"))) (princ "\nBlock 'Room_Tag' not present"))
   (t
   (setq ss (sss ss) tl (mapcar '(lambda (x) (cdr (assoc 1 (entget x)))) ss)
    ip (cdr (assoc 10 (entget (caddr ss)))))
   (setvar "ATTREQ" 0)(command-s "-insert" bn ip 1 1 0)
   (mapcar '(lambda (att val) (wai bn att val)) '("RM_TAG" "RM_VENT" "RM_NO." "RM_AREA") tl)
   (mapcar 'entdel ss)
   (if (setq ss (ssget "w" p1 p2 '((0 . "LWPOLYLINE"))))
(progn (entdel (ssname ss 0))(setq ss nil)))
   (setvar "ATTREQ" old-att-req)
   )
)
)



 
 
仅替换主要功能c:RoomTag
gr.Rlx

CAD_Noob 发表于 2022-7-5 16:48:49

 
嗨,RLX,我遇到了这个错误:
 
ROOMTAG
<<< Select Mtexts >>>
Select 1st corner :
Select 2nd corner :; error: no function definition: COMMAND-S

CAD_Noob 发表于 2022-7-5 16:51:40

它现在工作得很好
 
我换了线
(setvar "ATTREQ" 0)(command-s "-insert" bn ip 1 1 0)
 
用这个
(setvar "ATTREQ" 0)(command "-insert" bn ip 1 1 0)
 
非常感谢!我相信这不仅对我有益,而且对同时在revit和autocad中工作的其他人有益。

ronjonp 发表于 2022-7-5 16:54:41

 
将命令-s替换为:
(if command-s
command-s
command
)

devitg 发表于 2022-7-5 16:57:48

 
某些acad旧版本不支持Command-s
更改为
 
命令

Tharwat 发表于 2022-7-5 17:03:01

 
如果我没有弄错的话,command-s是从AutoCAD 2017开始的。

devitg 发表于 2022-7-5 17:05:33

它的目的是什么??
页: 1 [2]
查看完整版本: 多行文字到属性