LISP需要重命名空格b
大家好,我是新来的,希望能找到一些帮助。我在AutoCAD MEP中使用空间,我希望能够通过选择空间,然后选择建筑师提供的房间名称/编号文本,轻松重命名我的空间。这将节省大量时间,因为必须键入数百个房间的名称和编号来重命名这些空间。为了清晰起见,我附上了一张图片。
这将允许我导出清晰标记的gbXML空间/分区数据,以进行冷/热负荷分析。
如果不存在这样的lisp例程,有人能为我指出将选定文本插入属性的lisp的正确方向吗?
非常感谢您的帮助!
看起来您愿意用AutoLISP修改MEP的自定义图元-我不知道Vanilla AutoCAD中有空间图元。因此,也很容易从使用MEP的人那里获得支持。
为了查看此实体的关联列表是否可以访问和修改,请将下面的代码粘贴到命令行,选择一个空格项并将结果发布在此处。非常感谢。
(entget (car (entsel))) 谢谢你的回复。以下是命令的结果:
Command: (entget (car (entsel)))
Select object: ((-1 . <Entity name: 7ffff265c00>) (0 . "AEC_SPACE") (5 .
"5BD0") (102 . "{ACAD_XDICTIONARY") (360 . <Entity name: 7ffff265c10>) (102 .
"}") (330 . <Entity name: 7ffff2459f0>) (100 . "AcDbEntity") (67 . 0) (410 .
"Model") (8 . "G-Spce")) 不幸的是,该实体的功能似乎没有直接公开,因此,如果没有访问MEP,将非常需要调试代码来修改它。 好的,明白了。无论如何,谢谢你抽出时间。
也许MEP的其他人可以提供一些见解。 欢迎来到CADTutor!
如果文本实体没有任何不可靠的格式,则应该可以:
(defun c:RS () (c:RenameMepSpace))
(defun c:RenameMepSpace(/ *error* _Nomutt)
(princ "\rRENAMEMEPSPACE ")
(vl-load-com)
(defun *error*(msg)
(and oldNomutt (setvar 'nomutt oldNomutt))
(if acDoc
(vla-endundomark acDoc))
(cond ((not msg)) ; Normal exit
((member msg '("Function cancelled" "quit / exit abort"))) ; <esc> or (quit)
((princ (strcat "\n** Error: " msg " ** ")))) ; Fatal error, display it
(princ))
(defun _Nomutt(on /)
(if on
(setvar 'nomutt 0)
(setvar 'nomutt 1)))
((lambda (acDoc oldNomutt / ssSpace ssText name)
(if (and (_Nomutt T)
(princ "\nSelect space object to name: ")
(_Nomutt nil)
(setq ssSpace (ssget ":S:E:L" '((0 . "AEC_SPACE"))))
(_Nomutt T)
(princ "\nSelect text to name space object: ")
(_Nomutt nil)
(setq ssText (ssget ":S:E:L" '((0 . "MTEXT,TEXT")))))
(progn
(vla-startundomark acDoc)
(setq name (vla-get-textstring
(vlax-ename->vla-object
(ssname ssText 0))))
(while (vl-string-search "\\P" name)
(setq name (vl-string-subst " " "\\P" name)))
(vla-put-name
(vlax-ename->vla-object (ssname ssSpace 0))
name)
(_Nomutt T)
(prompt (strcat "\n\nMEP Space renamed>>" name))
(*error* nil))
(cond (ssText (*error* "No space selected"))
((*error* nil)))))
(vla-get-activedocument (vlax-get-acad-object))
(getvar 'nomutt)))
**使用AutoCAD MEP 2012测试 哇,太快了!非常感谢!
很乐意帮忙。
页:
[1]