乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
楼主: Lee Roy

[编程交流] AEC项目编号(字段?)

[复制链接]

12

主题

179

帖子

167

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
60
发表于 2022-7-6 08:19:38 | 显示全部楼层
当我将字段插入文档时,“字段表达式”是%%。
 
-编辑-
这就是我要找的。我不知道如何将字段表达式放入lisp。
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 08:22:03 | 显示全部楼层
 
你一开始为什么不这么说!
 
  1. (vl-load-com)
  2. (defun c:FOO (/ ss)
  3. (prompt "\nSelect text entity to replace "TextString" with AEC Project Number: ")
  4. (if (setq ss (ssget ":S:E:L" '((0 . "TEXT,MTEXT"))))
  5.    (vla-put-textstring
  6.      (vlax-ename->vla-object
  7.        (ssname ss 0)
  8.      )
  9.      "%<\AecPr "ProjectNumber">%"
  10.    )
  11. )
  12. )
回复

使用道具 举报

12

主题

179

帖子

167

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
60
发表于 2022-7-6 08:24:04 | 显示全部楼层
英雄联盟
 
是的,这就是我想要的数据。
 
好的,我想做一些类似的事情:(现在,稍后将列出)
 
  1. (vl-load-com)
  2. (defun c:blah (/ projnum)
  3. (setq projnum .............)
  4. (if
  5.    (= projnum "1000.00")
  6.    (c:plotstyle1)
  7.    (t
  8.      (c:plotstyle2)
  9.    )
  10. )
  11. )

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

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 08:28:39 | 显示全部楼层
可以从eName的DXF 1或Vla对象的TextString属性中提取。
 
我个人会使用后者,因为我也会确保首先包含字段代码验证;例子:
 
  1. (defun _GetTextStringIf (oText fieldCode)
  2. (if (= fieldCode (vla-fieldcode oText))
  3.    (vla-get-textstring oText)
  4. )
  5. )
  6. (defun c:FOO (/ ss v)
  7. (if (and (setq ss (ssget ":S:E:L" '((0 . "TEXT,MTEXT"))))
  8.         (setq v (vlax-ename->vla-object (ssname ss 0)))
  9.     )
  10.    (prompt (_GetTextStringIf v "%<[b][color=red]\[/color][/b]\AecPr "ProjectNumber">%"))
  11. )
  12. (princ)
  13. )
回复

使用道具 举报

12

主题

179

帖子

167

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
60
发表于 2022-7-6 08:29:31 | 显示全部楼层
我得到“错误的参数类型:stringp nil”
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 08:32:52 | 显示全部楼层
 
很抱歉,我忽略了所需的双反斜杠(即“\\”),它表示字段代码字符串中的单反斜杠“\”。
 
请参阅我之前帖子中的修订代码。
回复

使用道具 举报

12

主题

179

帖子

167

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

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

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 08:40:11 | 显示全部楼层
嗯,由于我们不使用AMEP进行生产,我没有一个文档可以自己测试。。。有有效项目等的人。。
 
我能想到的最好办法是,使用vlax dump object开始剔除各种AMEP对象的属性。。。我不确定AMEP ActiveX引用在哪里,但我能够将这些代码拼凑在一起,以转储2011年或2012年的AecX。AecBaseApplication的Interface对象,可能是您要找的“project”属性驻留在那里(老实说,我真的不确定):
 
  1. ((lambda (key / aecx)
  2.   (if (and (setq aecx (cond ((vl-string-search "R18.1" key) "6.5")
  3.                        ((vl-string-search "R18.2" key) "6.7")
  4.                   )
  5.          )
  6.          (setq aecx (strcat "AecX.AecBaseApplication." aecx))
  7.      )
  8.    (progn
  9.      (vlax-dump-object
  10.        (setq    aecApp
  11.             (vla-getinterfaceobject (vlax-get-acad-object) aecx)
  12.        )
  13.        T
  14.      )
  15.      (vlax-release-object aecApp)
  16.    )
  17.    (prompt "\n** Only AutoCAD MEP 2011, 2012 supported ** ")
  18.   )
  19. )
  20. (vlax-product-key)
  21. )

 
HTH公司
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 08:44:56 | 显示全部楼层
该死的,这会带来什么回报:
 
  1. (getvar 'projectname)

 
.... ???
回复

使用道具 举报

12

主题

179

帖子

167

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
60
发表于 2022-7-6 08:47:02 | 显示全部楼层
 
谢谢你的帮助。即使你不能准确地找到它,你也给了我很多信息。
 
那就回来了
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-9 22:47 , Processed in 0.604464 second(s), 81 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表