乐筑天下

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

[编程交流] 尺寸值自动求和

[复制链接]

5

主题

18

帖子

13

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-6 08:17:48 | 显示全部楼层 |阅读模式
大家好!
 
我到处都搜索到了一个lisp,它可以对所有选定的维度值求和。
 
我已经得到了对所有直线和/或多段线求和的lisp,但这次它不起作用。
 
有人知道Lisp程序能做到这一点吗?对所选维度实体值求和?
 
提前谢谢。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 08:23:44 | 显示全部楼层
作为对我编写的旧区域lisp的快速修改,仅使用维度的测量属性:
 
  1. (defun c:Dims2Field ( / *error* spc doc pt uFlag ss ids )
  2. (vl-load-com)
  3. ;; © Lee Mac 2010
  4. (defun *error* ( msg )
  5.    (and uFlag (vla-EndUndomark doc))
  6.    (or (wcmatch (strcase msg) "*BREAK,*CANCEL*,*EXIT*")
  7.        (princ (strcat "\n** Error: " msg " **")))
  8.    (princ)
  9. )
  10. (setq spc
  11.    (if
  12.      (or
  13.        (eq AcModelSpace
  14.          (vla-get-ActiveSpace
  15.            (setq doc
  16.              (vla-get-ActiveDocument
  17.                (vlax-get-acad-object)
  18.              )
  19.            )
  20.          )
  21.        )
  22.        (eq :vlax-true (vla-get-MSpace doc))
  23.      )
  24.      (vla-get-ModelSpace doc)
  25.      (vla-get-PaperSpace doc)
  26.    )
  27. )  
  28. (if (and (ssget '((0 . "*DIMENSION")))
  29.           (setq pt (getpoint "\nPick Point for Field: ")))
  30.    (progn
  31.      (setq uFlag (not (vla-StartUndoMark doc)))
  32.      
  33.      (vlax-for obj (setq ss (vla-get-ActiveSelectionSet doc))
  34.        (setq Ids
  35.          (cons (GetObjectID obj doc) Ids)
  36.        )
  37.      )
  38.      (vla-delete ss)
  39.      (vla-AddMText spc (vlax-3D-point pt) 0.
  40.        (if (= 1 (length Ids))
  41.          (strcat "%<\\AcObjProp Object(%<\\_ObjId " (car Ids) ">%).Measurement \\f "%lu6">%")
  42.          (strcat "%<\\AcExpr"
  43.            (lst->str Ids " %<\\AcObjProp Object(%<\\_ObjId " ">%).Measurement >% +")
  44.            ">%).Measurement >% \\f "%lu6">%"
  45.          )
  46.        )
  47.      )
  48.      
  49.      (setq uFlag (vla-EndUndomark doc))
  50.    )
  51. )
  52. (princ)
  53. )
  54. (defun lst->str ( lst d1 d2 )
  55. ;; © Lee Mac 2010
  56. (if (cdr lst)
  57.    (strcat d1 (car lst) d2 (lst->str (cdr lst) d1 d2))
  58.    (strcat d1 (car lst))
  59. )
  60. )
  61. (defun GetObjectID ( obj doc )
  62. ;; © Lee Mac 2010
  63. (if
  64.    (eq "X64"
  65.      (strcase
  66.        (getenv "PROCESSOR_ARCHITECTURE")
  67.      )
  68.    )
  69.    (vlax-invoke-method
  70.      (vla-get-Utility doc) 'GetObjectIdString obj :vlax-false
  71.    )
  72.    (itoa (vla-get-Objectid obj))
  73. )
  74. )
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 08:28:28 | 显示全部楼层
这是我不久前写的。。。
 
  1. (defun c:DimSum (/ ss)
  2. ;; Alan J. Thompson
  3. (if (setq ss (ssget '((0 . "DIMENSION"))))
  4.    ((lambda (v)
  5.       (vlax-for x (setq ss (vla-get-activeselectionset
  6.                              (cond (*AcadDoc*)
  7.                                    ((setq *AcadDoc* (vla-get-activedocument
  8.                                                       (vlax-get-acad-object)
  9.                                                     )
  10.                                     )
  11.                                    )
  12.                              )
  13.                            )
  14.                   )
  15.         (or (wcmatch (vla-get-objectname x) "*Angular*") (setq v (+ v (vla-get-measurement x))))
  16.       )
  17.       (vla-delete ss)
  18.       (or (zerop v) (alert (strcat "Total: " (rtos v))))
  19.     )
  20.      0.
  21.    )
  22. )
  23. (princ)
  24. )

李,知道角度尺寸也有测量性质。我的原稿要简单得多,直到我好奇如果我选择了一个,它是否会崩溃。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 08:32:00 | 显示全部楼层
是的,角度的缺点是场以Rads显示。。。
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 08:40:29 | 显示全部楼层
对,但如果要计算维度的总和,角度维度不是我们想要的长度值。我的观点是它应该被过滤掉。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 08:41:28 | 显示全部楼层
 
好的,我把这个留给OP
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 08:49:11 | 显示全部楼层
没有关系。我只是想让你知道。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 08:52:57 | 显示全部楼层
 
谢谢
回复

使用道具 举报

5

主题

18

帖子

13

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-6 08:58:50 | 显示全部楼层
谢谢你们!完全符合需要!
回复

使用道具 举报

0

主题

1

帖子

1

银币

初来乍到

Rank: 1

铜币
0
发表于 2022-7-6 09:03:22 | 显示全部楼层
这节省了我的时间。。。。
非常感谢。。。。。。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-9 07:54 , Processed in 0.346593 second(s), 72 queries .

© 2020-2025 乐筑天下

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