乐筑天下

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

[编程交流] Lisp编辑-多边形区域

[复制链接]
Peu

1

主题

5

帖子

4

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 09:36:08 | 显示全部楼层 |阅读模式
大家好!
 
我通常通过朋友的帐号进入论坛。但现在我真的需要你的帮助。
 
我发现了一个非常好的lisp,它可以获取多段线的面积,并使用字段属性插入多段线,字段属性的文本大小与注释预设中的文本大小相同。唯一的问题是,它将测量显示为平方英尺,但在Autocad 2011 x64上运行良好。
 
这是我找到的Lisp命令:
 
  1. ;;; AreaText.LSP ver 3.0
  2. ;;; Command name is AT
  3. ;;; Select a polyline and where to place the text
  4. ;;; Sample result: 2888.89 sq ft
  5. ;;; As this is a FIELD it is updated based on the FIELDEVAL
  6. ;;; or the settings found in the OPTIONS dialog box
  7. ;;; By Jimmy Bergmark
  8. ;;; Copyright (C) 2007-2010 JTB World, All Rights Reserved
  9. ;;; Website: [url="http://www.jtbworld.com/"]www.jtbworld.com[/url]
  10. ;;; E-mail: [email="info@jtbworld.com"]info@jtbworld.com[/email]
  11. ;;; 2007-09-05 - First release
  12. ;;; 2009-08-02 - Updated to work in both modelspace and paperspace
  13. ;;; 2010-10-29 - Updated to work also on 64-bit AutoCAD
  14. ;;; Uses TEXTSIZE for the text height
  15. (defun Get-ObjectIDx64 (obj / util)
  16. (setq util (vla-get-Utility (vla-get-activedocument (vlax-get-acad-object))))
  17. (if (= (type obj) 'ENAME)(setq obj (vlax-ename->vla-object obj)))
  18. (if (= (type obj) 'VLA-OBJECT)
  19.    (if (> (vl-string-search "x64" (getvar "platform")) 0)
  20.      (vlax-invoke-method util "GetObjectIdString" obj :vlax-False)
  21.      (rtos (vla-get-objectid obj) 2 0)
  22.    )
  23. )
  24. )
  25. (defun c:AT (/ entObject entObjectID InsertionPoint ad)
  26. (vl-load-com)
  27. (setq entObject (vlax-ename->vla-object(car (entsel)))
  28.        entObjectID (Get-ObjectIDx64 entObject)
  29.        InsertionPoint (vlax-3D-Point (getpoint "Select point: "))
  30.        ad (vla-get-ActiveDocument (vlax-get-acad-object))
  31. )
  32. (vla-addMText (if (= 1 (vla-get-activespace ad))
  33.    (vla-get-modelspace ad)
  34.    (if (= (vla-get-mspace ad) :vlax-true)
  35.      (vla-get-modelspace ad)
  36.      (vla-get-paperspace ad)
  37.    )
  38. )
  39. InsertionPoint 0.0 (strcat
  40. "####"
  41. ))
  42. )

 
如果有人能帮我更改这个lisp,使其仅以平方米(sufix为“m²”)显示度量值,我将不胜感激。
 
我在某处找到这句话,我不知道它是否有用:
 
  1.    ("%<[url="file://acobjprop/"]\\AcObjProp[/url] Object(%<[url="file://_objid/"]\\_ObjId[/url] "(rtos objID 2 0)">%).Area [url="file://f/"]\\f[/url] "%lu2%pr1%ps[Area , m sq]%ct8[1e-006]">%")

 
非常感谢你!
回复

使用道具 举报

4

主题

2143

帖子

2197

银币

限制会员

铜币
-24
发表于 2022-7-6 09:44:24 | 显示全部楼层
你需要使用代码标签,只要选择(#),你就会得到
  1. <p> </p><p>Have you tried jtbworld?</p>
回复

使用道具 举报

Peu

1

主题

5

帖子

4

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 09:51:04 | 显示全部楼层
SLW210,
我刚用“on codes”更改了帖子。Sry。我还发现在jtbworld上的代码,没有以米为单位的区域代码,用这样的字段属性显示结果。
 
线程:
 
大家好!
 
我通常通过朋友的帐号进入论坛。但现在我真的需要你的帮助。
 
我发现了一个非常好的lisp,它可以获取多段线的面积,并使用字段属性插入多段线,字段属性的文本大小与注释预设中的文本大小相同。唯一的问题是,它将测量显示为平方英尺,但在Autocad 2011 x64上运行良好。
 
这是我找到的Lisp命令:
 
  1. ;;; AreaText.LSP ver 3.0
  2. ;;; Command name is AT
  3. ;;; Select a polyline and where to place the text
  4. ;;; Sample result: 2888.89 sq ft
  5. ;;; As this is a FIELD it is updated based on the FIELDEVAL
  6. ;;; or the settings found in the OPTIONS dialog box
  7. ;;; By Jimmy Bergmark
  8. ;;; Copyright (C) 2007-2010 JTB World, All Rights Reserved
  9. ;;; Website: [url="http://www.jtbworld.com"]www.jtbworld.com[/url]
  10. ;;; E-mail: [email="info@jtbworld.com"]info@jtbworld.com[/email]
  11. ;;; 2007-09-05 - First release
  12. ;;; 2009-08-02 - Updated to work in both modelspace and paperspace
  13. ;;; 2010-10-29 - Updated to work also on 64-bit AutoCAD
  14. ;;; Uses TEXTSIZE for the text height
  15. (defun Get-ObjectIDx64 (obj / util)
  16. (setq util (vla-get-Utility (vla-get-activedocument (vlax-get-acad-object))))
  17. (if (= (type obj) 'ENAME)(setq obj (vlax-ename->vla-object obj)))
  18. (if (= (type obj) 'VLA-OBJECT)
  19.    (if (> (vl-string-search "x64" (getvar "platform")) 0)
  20.      (vlax-invoke-method util "GetObjectIdString" obj :vlax-False)
  21.      (rtos (vla-get-objectid obj) 2 0)
  22.    )
  23. )
  24. )
  25. (defun c:AT (/ entObject entObjectID InsertionPoint ad)
  26. (vl-load-com)
  27. (setq entObject (vlax-ename->vla-object(car (entsel)))
  28.        entObjectID (Get-ObjectIDx64 entObject)
  29.        InsertionPoint (vlax-3D-Point (getpoint "Select point: "))
  30.        ad (vla-get-ActiveDocument (vlax-get-acad-object))
  31. )
  32. (vla-addMText (if (= 1 (vla-get-activespace ad))
  33.    (vla-get-modelspace ad)
  34.    (if (= (vla-get-mspace ad) :vlax-true)
  35.      (vla-get-modelspace ad)
  36.      (vla-get-paperspace ad)
  37.    )
  38. )
  39. InsertionPoint 0.0 (strcat
  40. "####"
  41. ))
  42. )

 
如果有人能帮我更改这个lisp,使其仅以平方米(sufix为“m²”)显示度量值,我将不胜感激。
 
我在某处找到了这句话,我不知道它是否有用:
 
  1.    ("%<[url="file://acobjprop/"]\\AcObjProp[/url] Object(%<[url="file://_objid/"]\\_ObjId[/url] "(rtos objID 2 0)">%).Area [url="file://f/"]\\f[/url] "%lu2%pr1%ps[Area , m sq]%ct8[1e-006]">%")

 
非常感谢你!
回复

使用道具 举报

8

主题

1647

帖子

1647

银币

初来乍到

Rank: 1

铜币
36
发表于 2022-7-6 09:57:41 | 显示全部楼层
我已经批准了你的帖子。由于你发布的代码中有多个链接,他们由论坛软件主持。
回复

使用道具 举报

Peu

1

主题

5

帖子

4

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 10:03:52 | 显示全部楼层
谢谢CAD64,我以为我做错了什么=)
 
我估计我就快到了。。。我试图更改一些行,但仍然无法插入度量值,因为我无法插入前缀(面积=)
 
这是目前为止的最后一个版本:
 
  1. ;;; AreaText.LSP ver 3.0
  2. ;;; Command name is AT
  3. ;;; Select a polyline and where to place the text
  4. ;;; Sample result: 2888.89 sq ft
  5. ;;; As this is a FIELD it is updated based on the FIELDEVAL
  6. ;;; or the settings found in the OPTIONS dialog box
  7. ;;; By Jimmy Bergmark
  8. ;;; Copyright (C) 2007-2010 JTB World, All Rights Reserved
  9. ;;; Website: www.jtbworld.com
  10. ;;; E-mail: info@jtbworld.com
  11. ;;; 2007-09-05 - First release
  12. ;;; 2009-08-02 - Updated to work in both modelspace and paperspace
  13. ;;; 2010-10-29 - Updated to work also on 64-bit AutoCAD
  14. ;;; Uses TEXTSIZE for the text height
  15. (defun Get-ObjectIDx64 (obj / util)
  16. (setq util (vla-get-Utility (vla-get-activedocument (vlax-get-acad-object))))
  17. (if (= (type obj) 'ENAME)(setq obj (vlax-ename->vla-object obj)))
  18. (if (= (type obj) 'VLA-OBJECT)
  19.    (if (> (vl-string-search "x64" (getvar "platform")) 0)
  20.      (vlax-invoke-method util "GetObjectIdString" obj :vlax-False)
  21.      (rtos (vla-get-objectid obj) 2 0)
  22.    )
  23. )
  24. )
  25. (defun c:AT (/ entObject entObjectID InsertionPoint ad)
  26. (vl-load-com)
  27. (setq entObject (vlax-ename->vla-object(car (entsel)))
  28.        entObjectID (Get-ObjectIDx64 entObject)
  29.        InsertionPoint (vlax-3D-Point (getpoint "Select point: "))
  30.        ad (vla-get-ActiveDocument (vlax-get-acad-object))
  31. )
  32. (vla-addMText (if (= 1 (vla-get-activespace ad))
  33.    (vla-get-modelspace ad)
  34.    (if (= (vla-get-mspace ad) :vlax-true)
  35.      (vla-get-modelspace ad)
  36.      (vla-get-paperspace ad)
  37.    )
  38. )
  39. InsertionPoint 0.0 (strcat
  40. "%<[url="file://acobjprop/"]\\AcObjProp[/url] Object(%<[url="file://_objid/"]\\_ObjId[/url] "
  41. entObjectID
  42. ">%).Area [url="file://f/"]\\f[/url] "%pr2%lu2%ct4%qf1 m²">%"
  43. ))
  44. )

 
仍然需要你的帮助!
 
非常感谢。
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
438
发表于 2022-7-6 10:10:05 | 显示全部楼层
这应该有帮助。。。
 
103612voxwu6ytvu7vd8wo.jpg
 
我发现最简单的方法是构造一个模拟字段,然后使用vla字段代码来检索字段编码。
回复

使用道具 举报

Peu

1

主题

5

帖子

4

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 10:20:53 | 显示全部楼层
Alanjt,
非常感谢你的帮助,但我还是做不到
 
我在Autocad命令行上收到此消息:“选择对象:选择点:;错误:错误的参数类型:stringp nil”
 
我用了这个:
 
  1. ;;; AreaText.LSP ver 3.0
  2. ;;; Command name is AT
  3. ;;; Select a polyline and where to place the text
  4. ;;; Sample result: 2888.89 sq ft
  5. ;;; As this is a FIELD it is updated based on the FIELDEVAL
  6. ;;; or the settings found in the OPTIONS dialog box
  7. ;;; By Jimmy Bergmark
  8. ;;; Copyright (C) 2007-2010 JTB World, All Rights Reserved
  9. ;;; Website: www.jtbworld.com
  10. ;;; E-mail: info@jtbworld.com
  11. ;;; 2007-09-05 - First release
  12. ;;; 2009-08-02 - Updated to work in both modelspace and paperspace
  13. ;;; 2010-10-29 - Updated to work also on 64-bit AutoCAD
  14. ;;; Uses TEXTSIZE for the text height
  15. (defun Get-ObjectIDx64 (obj / util)
  16. (setq util (vla-get-Utility (vla-get-activedocument (vlax-get-acad-object))))
  17. (if (= (type obj) 'ENAME)(setq obj (vlax-ename->vla-object obj)))
  18. (if (= (type obj) 'VLA-OBJECT)
  19.    (if (> (vl-string-search "x64" (getvar "platform")) 0)
  20.      (vlax-invoke-method util "GetObjectIdString" obj :vlax-False)
  21.      (rtos (vla-get-objectid obj) 2 0)
  22.    )
  23. )
  24. )
  25. (defun c:ATF (/ entObject entObjectID InsertionPoint ad)
  26. (vl-load-com)
  27. (setq entObject (vlax-ename->vla-object(car (entsel)))
  28.        entObjectID (Get-ObjectIDx64 entObject)
  29.        InsertionPoint (vlax-3D-Point (getpoint "Select point: "))
  30.        ad (vla-get-ActiveDocument (vlax-get-acad-object))
  31. )
  32. (vla-addMText (if (= 1 (vla-get-activespace ad))
  33.    (vla-get-modelspace ad)
  34.    (if (= (vla-get-mspace ad) :vlax-true)
  35.      (vla-get-modelspace ad)
  36.      (vla-get-paperspace ad)
  37.    )
  38. )
  39. InsertionPoint 0.0 (strcat
  40. "%<\AcObjProp.16.2 Object(%<\_ObjId 8796088874016>%).Area \f "%lu2%ct4%qf1%pr2 m²%ps[A=,m²]%ct8[144]">%"
  41. ))
  42. )

 
还有什么提示吗?=)
 
我也在学习!
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
438
发表于 2022-7-6 10:28:01 | 显示全部楼层
您没有正确定位引号,并且没有将对象id应用于字段。
 
试用:
  1.     (strcat "%<\\AcObjProp.16.2 Object(%<\\_ObjId "
  2.            entObjectID
  3.            ">%).Area \\f "%lu2%pr2%ps[A=,m²]%ct8[144]">%"
  4.    )

 
顺便说一句,你应该把伯格马克的头球放回去,一点也不酷。
回复

使用道具 举报

Peu

1

主题

5

帖子

4

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 10:36:01 | 显示全部楼层
安兰吉特,
我非常感激!它工作得很好!
 
伯格马克肯定会回来的。我刚刚删除了在论坛这里插入的网页链接需要得到版主的批准,需要一些时间才能出现。
 
非常感谢你!我现在会节省很多时间!=)
回复

使用道具 举报

4

主题

2143

帖子

2197

银币

限制会员

铜币
-24
发表于 2022-7-6 10:42:21 | 显示全部楼层
我把标题放回原处。如果你需要帮助,就去问裴。MOD在这里提供帮助。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-7 02:13 , Processed in 0.970126 second(s), 85 queries .

© 2020-2025 乐筑天下

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