乐筑天下

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

[编程交流] PBEJSE区域字段lisp not wor

[复制链接]

28

主题

124

帖子

96

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
140
发表于 2022-7-5 17:52:37 | 显示全部楼层 |阅读模式
大家好
我发现PBEJSE的一个例程非常适合我——但它在AutoCAD 2013中返回了零面积——见图。
 
185243vaydxdgo7romz7xy.png
 
但是如果我选择字段。。。
 
185245mwymgjwg2zuofm0u.png
 
...更改属性类型。。。
 
185246kgzrhq3prwgb0n34.png
 
...然后将属性更改回“面积”,它就会起作用。我唯一能指出的是,字段表达式现在与lisp代码中的不同
 
185247ge9zeeyykz6hv2bv.png
 
代码是。。。
 
  1. ;; Written by PBEJSE on CADTutor
  2. ;; Post #4 https://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/multiple-polyline-area-labels/td-p/3459894
  3. (defun c:PolyArea  (/ BitVersion acsp ss e ptList ID StrField txt p)
  4. (vl-load-com)      
  5.      (setq BitVersion
  6.                       (if (> (strlen
  7.                                    (vl-prin1-to-string
  8.                                          (vlax-get-acad-object)))
  9.                              40) T nil)
  10.            acsp       (vla-get-block
  11.                             (vla-get-activelayout
  12.                                   (vla-get-activedocument
  13.                                         (vlax-get-acad-object)))))
  14.      (if (setq ss (ssget "_X" '((0 . "*POLYLINE")
  15.                        (8 . "A-AREA-BDRY")
  16.                        (-4 . "&")
  17.                        (70 . 1)(410 . "Model"))))
  18.      (repeat (sslength ss)
  19.            (setq e     (ssname ss 0)
  20.                  sum   '(0 0)
  21.                  verts (cdr (assoc 90 (entget e))))
  22.            (setq ptList
  23.                       (mapcar 'cdr
  24.                               (vl-remove-if-not
  25.                                     '(lambda (x) (= (car x) 10))
  26.                                     (entget e))))
  27.            (foreach x ptList (setq sum (mapcar '+ x sum)))
  28.            (setq ID   (if BitVersion
  29.                             (vlax-invoke-method
  30.                                   (vla-get-Utility
  31.                                         (vla-get-ActiveDocument
  32.                                               (vlax-get-acad-object)))
  33.                                   'GetObjectIdString
  34.                                   (vlax-ename->vla-object
  35.                                         e)
  36.                                   :vlax-False)
  37.                             (itoa (vla-get-objectid
  38.                                         (vlax-ename->vla-object e)))))
  39.            (setq StrField
  40.                       (strcat
  41.                             "%<\\AcObjProp Object(%<\\_ObjId "
  42.                             ID
  43.                             ">%).Area \\f "%lu2%pr2%ps[, m²]%ds44%ct8[1e-006]">%"))
  44.            (vla-put-AttachmentPoint
  45.                  (setq txt (vla-addMText
  46.                                  acsp
  47.                                  (setq p (vlax-3d-point
  48.                                                   (mapcar '/ sum
  49.                                                         (list verts
  50.                                                               verts))))
  51.                                  0  StrField))
  52.                  acAttachmentPointMiddleCenter)
  53.            (vla-put-InsertionPoint txt p)
  54.            (ssdel e ss)
  55.            )(princ "\0 Objects found:"))
  56.      (princ)
  57.      )

 
有人知道为什么返回的面积为零吗?
 
谢谢
保罗
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 18:09:24 | 显示全部楼层
嗨,保罗,
 
用以下格式替换字段代码:
 
  1. "%<\\AcObjProp Object(%<\\_ObjId " id ">%).Area \\f "%lu2%pr2%ps[, m²]%pr2%ds44">%"
回复

使用道具 举报

28

主题

124

帖子

96

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
140
发表于 2022-7-5 18:14:04 | 显示全部楼层
令人惊叹的谢谢Tharwat,做得很好。
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 18:23:15 | 显示全部楼层
 
不客气。所有的功劳都归于pBe。
回复

使用道具 举报

28

主题

124

帖子

96

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
140
发表于 2022-7-5 18:42:06 | 显示全部楼层
绝对地非常感谢PBEJSE提供例行程序
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 18:52:18 | 显示全部楼层
FWIW,问题是已应用于结果的1e-6(0.000001)的转换系数-这可以通过单击“附加格式…”看到字段对话框中的按钮。
回复

使用道具 举报

28

主题

124

帖子

96

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
140
发表于 2022-7-5 19:01:57 | 显示全部楼层
 
谢谢李。原始代码必须用于mm。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-8-19 04:01 , Processed in 3.892575 second(s), 69 queries .

© 2020-2025 乐筑天下

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