乐筑天下

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

[编程交流] 多段线的面积

[复制链接]
GP_

8

主题

248

帖子

245

银币

初来乍到

Rank: 1

铜币
42
发表于 2022-7-6 09:27:17 | 显示全部楼层
要在放置文本时查看文本。。。
(更好的CMDECHO=0)
 
  1. (defun c:TesT (/ ss p)
  2. ;; Tharwat 18. Nov. 2011 ;;
  3.    (if (and (setq ss (car (entsel "\n Select a closed polyline :")))
  4.             (vlax-curve-IsClosed ss)
  5.        )
  6.        (progn
  7.            (entmake '((0 . "BLOCK")(2 . "_area_")(70 . 0)(10 0.0 0.0 0.0)))
  8.            (entmake
  9.                (list
  10.                    '(0 . "TEXT")
  11.                    '(10 0.0 0.0 0.0)
  12.                    (cons 40 (getvar 'textsize))
  13.                    (assoc 8 (entget ss))
  14.                    (cons 1
  15.                        (strcat
  16.                            (rtos (cvunit (vla-get-area (vlax-ename->vla-object ss)) "inch" "ft")
  17.                                         2 2
  18.                            )
  19.                            "sf"
  20.                        )
  21.                    )
  22.                )
  23.            )  
  24.            (entmake '((0 . "ENDBLK")))
  25.            (prompt "\n ")
  26.            (prompt "\n Specify Text location : ")
  27.            (command "_-insert" "_area_" pause "1" "1" "0")
  28.            (command "_explode" "_L")     
  29.        )
  30.    )
  31.    (princ)
  32. )
回复

使用道具 举报

12

主题

31

帖子

19

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
60
发表于 2022-7-6 09:31:57 | 显示全部楼层
仍然不工作。。。我的10'x10'盒子的面积将达到1200.00sf。。。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 09:38:50 | 显示全部楼层
写得很快,
 
  1. (defun c:test ( / area en nm pt )
  2.    (while
  3.        (progn (setvar 'ERRNO 0) (setq en (car (entsel)))
  4.            (cond
  5.                (   (= 7 (getvar 'ERRNO))
  6.                    (princ "\nMissed, try again.")
  7.                )
  8.                (   (eq 'ENAME (type en))
  9.                    (if (vl-catch-all-error-p
  10.                            (setq area (vl-catch-all-apply 'vlax-curve-getarea (list en)))
  11.                        )
  12.                        (princ "\nInvalid Object.")
  13.                    )
  14.                )
  15.                (   (setq area nil)   )
  16.            )
  17.        )
  18.    )
  19.    (if (and area (setq pt (getpoint "\nPoint for Text: ")))
  20.        (entmake
  21.            (list
  22.               '(0 . "TEXT")
  23.                (cons 210 (setq nm (trans '(0.0 0.0 1.0) 1 0 t)))
  24.                (cons  10 (trans pt 1 nm))
  25.                (cons  40 (getvar 'TEXTSIZE))
  26.                (assoc  8 (entget en))
  27.                (cons  50 (angle '(0.0 0.0 0.0) (trans (getvar 'UCSXDIR) 0 nm t)))
  28.                (cons   1 (rtos (/ area 144.0) 2))
  29.            )
  30.        )
  31.    )
  32.    (princ)
  33. )
  34. (vl-load-com) (princ)
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 09:43:57 | 显示全部楼层
 
你说得对,我不应该像在套路中那样使用转换,我应该像李那样使用它(/区域144)。
 
如果你有兴趣使用我的程序,就替换这个。
 
  1. (rtos (cvunit (vla-get-area (vlax-ename->vla-object ss)) "inch" "ft") 2 2 )

 
用这个。。
 
  1. (rtos (/ (vla-get-area (vlax-ename->vla-object ss)) 144.) 2 2 )
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-7 09:01 , Processed in 0.775753 second(s), 58 queries .

© 2020-2025 乐筑天下

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