Lee Roy 发表于 2022-7-6 08:19:38

当我将字段插入文档时,“字段表达式”是%%。
 
-编辑-
这就是我要找的。我不知道如何将字段表达式放入lisp。

BlackBox 发表于 2022-7-6 08:22:03

 
你一开始为什么不这么说!
 

(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\">%"
   )
)
)

Lee Roy 发表于 2022-7-6 08:24:04

英雄联盟
 
是的,这就是我想要的数据。
 
好的,我想做一些类似的事情:(现在,稍后将列出)
 

(vl-load-com)

(defun c:blah (/ projnum)
(setq projnum .............)
(if
   (= projnum "1000.00")
   (c:plotstyle1)
   (t
   (c:plotstyle2)
   )
)
)

 
c: plotstyle1和c:plotstyle2在别处定义。
 
如何将%%设置为“projnum”变量?

BlackBox 发表于 2022-7-6 08:28:39

可以从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)
)

Lee Roy 发表于 2022-7-6 08:29:31

我得到“错误的参数类型:stringp nil”

BlackBox 发表于 2022-7-6 08:32:52

 
很抱歉,我忽略了所需的双反斜杠(即“\\”),它表示字段代码字符串中的单反斜杠“\”。
 
请参阅我之前帖子中的修订代码。

Lee Roy 发表于 2022-7-6 08:38:19

酷,这很管用。现在,我们如何让它在不点击字段的情况下提取该值?
 
我脑子里有数百万的事情,所以我尽量解释清楚。。。
 
因此,当您运行该命令时,它会自动从activedocument中提取值。
 
我希望我的函数(比如acaddoc)在默认情况下分配“plotstyle1”,除非activedocument的ProjectNumber(%)与特定值(即“1000.00”)匹配,在这种情况下,它分配“plotstyle2”。我不想点击任何东西。
 
我真的很感谢你的帮助!

BlackBox 发表于 2022-7-6 08:40:11

嗯,由于我们不使用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公司

BlackBox 发表于 2022-7-6 08:44:56

该死的,这会带来什么回报:
 

(getvar 'projectname)

 
.... ???

Lee Roy 发表于 2022-7-6 08:47:02

 
谢谢你的帮助。即使你不能准确地找到它,你也给了我很多信息。
 
那就回来了
页: 1 [2]
查看完整版本: AEC项目编号(字段?)