-编辑-
这就是我要找的。我不知道如何将字段表达式放入lisp。
你一开始为什么不这么说!
(vl-load-com)
(defun c:FOO (/ ss)
(prompt "\nSelect text entity to replace \"TextString\" with AEC Project Number: ")
(if (setq ss (ssget ":S:E:L" '((0 . "TEXT,MTEXT"))))
(vla-put-textstring
(vlax-ename->vla-object
(ssname ss 0)
)
"%<\AecPr \"ProjectNumber\">%"
)
)
)
英雄联盟
是的,这就是我想要的数据。
好的,我想做一些类似的事情:(现在,稍后将列出)
(vl-load-com)
(defun c:blah (/ projnum)
(setq projnum .............)
(if
(= projnum "1000.00")
(c:plotstyle1)
(t
(c:plotstyle2)
)
)
)
c: plotstyle1和c:plotstyle2在别处定义。
如何将%%设置为“projnum”变量? 可以从eName的DXF 1或Vla对象的TextString属性中提取。
我个人会使用后者,因为我也会确保首先包含字段代码验证;例子:
(defun _GetTextStringIf (oText fieldCode)
(if (= fieldCode (vla-fieldcode oText))
(vla-get-textstring oText)
)
)
(defun c:FOO (/ ss v)
(if (and (setq ss (ssget ":S:E:L" '((0 . "TEXT,MTEXT"))))
(setq v (vlax-ename->vla-object (ssname ss 0)))
)
(prompt (_GetTextStringIf v "%<\\AecPr \"ProjectNumber\">%"))
)
(princ)
)
我得到“错误的参数类型:stringp nil”
很抱歉,我忽略了所需的双反斜杠(即“\\”),它表示字段代码字符串中的单反斜杠“\”。
请参阅我之前帖子中的修订代码。 酷,这很管用。现在,我们如何让它在不点击字段的情况下提取该值?
我脑子里有数百万的事情,所以我尽量解释清楚。。。
因此,当您运行该命令时,它会自动从activedocument中提取值。
我希望我的函数(比如acaddoc)在默认情况下分配“plotstyle1”,除非activedocument的ProjectNumber(%)与特定值(即“1000.00”)匹配,在这种情况下,它分配“plotstyle2”。我不想点击任何东西。
我真的很感谢你的帮助! 嗯,由于我们不使用AMEP进行生产,我没有一个文档可以自己测试。。。有有效项目等的人。。
我能想到的最好办法是,使用vlax dump object开始剔除各种AMEP对象的属性。。。我不确定AMEP ActiveX引用在哪里,但我能够将这些代码拼凑在一起,以转储2011年或2012年的AecX。AecBaseApplication的Interface对象,可能是您要找的“project”属性驻留在那里(老实说,我真的不确定):
((lambda (key / aecx)
(if (and (setq aecx (cond ((vl-string-search "R18.1" key) "6.5")
((vl-string-search "R18.2" key) "6.7")
)
)
(setq aecx (strcat "AecX.AecBaseApplication." aecx))
)
(progn
(vlax-dump-object
(setq aecApp
(vla-getinterfaceobject (vlax-get-acad-object) aecx)
)
T
)
(vlax-release-object aecApp)
)
(prompt "\n** Only AutoCAD MEP 2011, 2012 supported ** ")
)
)
(vlax-product-key)
)
HTH公司 该死的,这会带来什么回报:
(getvar 'projectname)
.... ???
谢谢你的帮助。即使你不能准确地找到它,你也给了我很多信息。
那就回来了
页:
1
[2]