明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 552|回复: 3

[讨论] 如何把line线组成的图形转换成闭合曲线并标注型心

[复制链接]
发表于 2020-6-30 07:29 | 显示全部楼层 |阅读模式
  1. (defun C:xingxin()
  2. (setq en (car(entsel "\n选取闭合曲线:")))
  3. ;(setvar "DELOBJ" 1)
  4. (if ( /= (get-dxf 0 en) "REGION")
  5. (progn
  6. (command "region" en "")
  7. (setq en (entlast))
  8. ));if

  9. (setq   
  10. ENT (vlax-ename->vla-object en)
  11. CEN (vlax-get ENT "centroid")
  12. AREA (vlax-get ENT "AREA"))
  13. (princ (strcat "\narea: " (rtos area 2 3)))
  14. (princ (strcat "\ncentroid: " (vl-princ-to-string cen )))
  15. (command "point" CEN )
  16. (princ)
  17.   )
  18.   ;;get-DXF 实体dxf数据 (get-DXF code ename)
  19. ;;get-dxf code ename, Designed by 林霄云。精简自e派。进行判断的,ename必须ename。
  20. (defun get-DXF (code ename )
  21. (cond ((= (type ename) 'ENAME)
  22.       (if        (= code -3)
  23.       (cdr (assoc code (entget ename '("*"))))
  24.       (cdr (assoc code (entget ename)))
  25.     ))
  26.   );COND
  27. )
这是一标注闭合曲线型心的程序,有个需要完善的地方,能否先增加一个判断,如果图形是line线组成,就把这些线改为闭合的多义线,再执行这个程序
  1. (defun c:bdx( / ss i ename endata entype)
  2. (princ "\n选择线段 <右键选择集>: ")
  3. (setq ss (ssget '((0 . "LINE,LWPOLYLINE,ARC"))))
  4.       (command "PEDITACCEPT" "1")
  5. (if ss
  6.       (command ".pedit" "m" ss "" "j" "0" "w" "0" "" "PEDITACCEPT" "0")
  7.       (command ".pedit" "m" "p" "" "j" "0" "w" "0" "" "PEDITACCEPT" "0")
  8. ))
能否把这两个程序合并为一
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2020-7-1 22:20 | 显示全部楼层
本帖最后由 yshf 于 2020-7-1 22:23 编辑

(defun c:xingxin()
    (setq osmode (getvar "osmode"))
    (setvar "osmode" 0)
    (setvar "PEDITACCEPT" 1)
    (princ "\n选择线段 <右键选择集>: ")
    (if (setq ss (ssget '((0 . "LINE,LWPOLYLINE,ARC"))))
        (progn
            (command ".pedit" "m" ss "" "j" "" "")
            (setq ent0 (entlast))
            (command "region" ent0 "")
            (setq ent (entlast))
            (If (not (equal ent0 ent))
                (progn
                    (setq Obj (vlax-ename->vla-object ent)
                          CEN (vlax-get Obj "centroid")
                          AREA (vlax-get Obj "AREA")
                    )
                    (command "undo" "")
                    (princ (strcat "\narea: " (rtos area 2 3)))
                    (princ (strcat "\ncentroid: " (vl-princ-to-string cen )))
                    (command "point" CEN )
                )
           )
        )
    )
    (setvar "osmode" 0)
    (setvar "PEDITACCEPT" 0)
    (princ)
)
发表于 2020-7-2 00:07 | 显示全部楼层
谢谢! yshf 分享程序!!!!!!
 楼主| 发表于 2020-7-2 07:39 | 显示全部楼层
perfect
谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-3-29 18:50 , Processed in 0.214189 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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