明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
12
返回列表 发新帖
楼主: xvbzcmn

[提问] 小程序报错:点击矩形,自动生成面积和重量标注

[复制链接]
发表于 2020-12-5 22:43:31 | 显示全部楼层
rocking2008 发表于 2020-12-5 22:12
长老,能否加入圆、多边形、PL线画的封闭区域这3个对象。目前只能支持矩形。

(defun c:plzsA()
  (vl-load-com)
  (setvar "cmdecho" 0)
  (setvar "blipmode" 0)
  (setvar "osmode" 0)
  (command "_undo" "be")
  (if (progn
           (princ "\n请选取圆、封闭多段线:")
                 (setq ssa (ssget '((0 . "LWPOLYLINE,CIRCLE"))))
      )
      (progn
         (setq i 0)
         (repeat (sslength ssa)
             (setq ent (ssname ssa i))
             (setq obj (vlax-ename->vla-object ent))
             (setq dxf (entget ent))
             (setq name (cdr (assoc 0 dxf)))
             (setq area (/ (vlax-curve-getArea obj) 1000000.0))
             (cond ((= name "CIRCLE")
                       (setq pmid (cdr (assoc 10 dxf)))
                   )
                   ((= name "LWPOLYLINE")
                       (If (= (vlax-get obj "Closed") -1)
                           (progn
                                (setq pts (mapcar 'cdr (vl-remove-if '(lambda(x)(/= (car x) 10)) dxf)))
                                (setq pmid (mapcar '/ (apply 'mapcar (cons '+ pts))
                                                      (list (length pts) (length pts))
                                           )
                                )
                           )
                           (setq pmid nil)
                       )
                  )
             )          
             (If (/= pmid nil)
                 (progn
                     (setq weight (* (* area 0.06) 2.5))
                     (setq context1 (strcat (rtos area) "平," (rtos weight) "t"))
                     (entmake (list
                                    '(0 . "TEXT")
                                    '(100 . "AcDbEntity")
                                    '(100 . "AcDbText")
                                     (cons 1 context1)
                                     (cons 10 pmid)
                                     (cons 11 pmid)
                                     (cons 40 300) '(41 . 1.0)
                                     (cons 50 0.0) '(51 . 0.0)
                                    '(71 . 0) '(72 . 1) '(73 . 2)
                               )
                      )
                 )
             )
          
             (setq i (1+ i))
         )
     )   
  )
  (command "_undo" "e")
  (princ)
)
回复 支持 1 反对 0

使用道具 举报

发表于 2020-12-5 23:21:38 | 显示全部楼层
yshf 发表于 2020-12-5 22:43
(defun c:plzsA()
  (vl-load-com)
  (setvar "cmdecho" 0)

长老非常贴心。谢谢。
 楼主| 发表于 2020-12-7 09:02:00 | 显示全部楼层
rocking2008 发表于 2020-12-5 22:05
(setq weight (* (* area 0.06) 2.5))
这个重量的计算,area是面积,乖以0.06是厚度,2.5是什么物质的1立 ...

您好,这里计算的是混凝土的重量
发表于 2020-12-7 14:27:13 | 显示全部楼层
瞧瞧看,谢谢楼主的分享
发表于 2020-12-9 08:24:58 | 显示全部楼层
yshf 发表于 2020-12-5 22:43
(defun c:plzsA()
  (vl-load-com)
  (setvar "cmdecho" 0)

yshf长老真的是太赞了。
发表于 2020-12-9 23:05:42 | 显示全部楼层

多谢各位前辈指导~
发表于 2021-5-27 09:43:37 | 显示全部楼层
yshf 发表于 2020-12-5 22:43
(defun c:plzsA()
  (vl-load-com)
  (setvar "cmdecho" 0)

大佬,您好:您在11楼的这个程序非常好用。
有没有一种可能,在面积大于0.3m3的时候,在图中放大红色标注,在面积小于等于0.3m2的时候,在图中相对较小粉色标注。
这个功能可以实现吗?





本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

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

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-5-17 06:56 , Processed in 0.144933 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表