乐筑天下

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

[编程交流] 我需要一个Lisp程序的语言来改变关闭

[复制链接]

15

主题

68

帖子

53

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
76
发表于 2022-7-6 08:23:16 | 显示全部楼层
 
从第三方应用程序导入的图形。
回复

使用道具 举报

35

主题

2471

帖子

2447

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
174
发表于 2022-7-6 08:27:05 | 显示全部楼层
然后,在这里发布一个示例图形可能会很有用-只有几个项目。
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 08:30:16 | 显示全部楼层
我想知道为什么第一个程序对你不起作用,但无论如何试试这个。。。。。
 
  1. (defun c:Test (/ ss i sn pt r spc vl)
  2. (vl-load-com)
  3. ;;; Tharwat 25 . June . 2012 ;;;
  4. (if (not acdoc)
  5.    (setq acdoc (vla-get-activedocument (vlax-get-acad-object)))
  6. )
  7. (setq spc (if (> (vla-get-activespace acdoc) 0)
  8.              (vla-get-modelspace acdoc)
  9.              (vla-get-paperspace acdoc)
  10.            )
  11. )
  12. (if (setq ss (ssget "_:L" '((0 . "*POLYLINE"))))
  13.    (progn
  14.      (repeat (setq i (sslength ss))
  15.        (setq sn (ssname ss (setq i (1- i))))
  16.        (if (vlax-curve-isclosed (setq vl (vlax-ename->vla-object sn)))
  17.          (progn
  18.            (entmakex
  19.              (list
  20.                '(0 . "CIRCLE")
  21.                (cons 10
  22.                      (vlax-safearray->list
  23.                        (vlax-variant-value
  24.                          (vla-get-Centroid
  25.                            (setq r
  26.                                   (car (vlax-invoke spc 'addregion (list vl)))
  27.                            )
  28.                          )
  29.                        )
  30.                      )
  31.                )
  32.                '(40 . 2.0)
  33.              )
  34.            )
  35.            (entdel (cdr (assoc -1 (entget sn))))
  36.            (vla-delete r)
  37.          )
  38.        )
  39.      )
  40.    )
  41. )
  42. (princ)
  43. )
回复

使用道具 举报

15

主题

68

帖子

53

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
76
发表于 2022-7-6 08:33:57 | 显示全部楼层
 
 
不幸的是,它没有起作用。
您可以查看附图吗?
谢谢
POLY\u CIR.dwg
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 08:36:33 | 显示全部楼层
 
代码不起作用,因为多段线是打开的,而不是闭合的。
回复

使用道具 举报

15

主题

68

帖子

53

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
76
发表于 2022-7-6 08:41:50 | 显示全部楼层
 
Tharwat,我为我的错误道歉,非常感谢您的关注。
事实上,对象具有如示例中所示的LW多段线和多段线,需要在圆中转换。
如果有人知道怎么做,我将不胜感激。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 08:43:49 | 显示全部楼层
请尝试以下操作:
 
  1. ([color=BLUE]defun[/color] c:p2c ( [color=BLUE]/[/color] _vertices _vertices1 _vertices2 _pointaverage e i r s )
  2.    ([color=BLUE]setq[/color] r 0.1) [color=GREEN];; Circle Radius[/color]
  3.    ([color=BLUE]defun[/color] _vertices ( l )
  4.        ([color=BLUE]if[/color] ([color=BLUE]eq[/color] [color=MAROON]"LWPOLYLINE"[/color] ([color=BLUE]cdr[/color] ([color=BLUE]assoc[/color] 0 l)))
  5.            (_vertices1 l)
  6.            (_vertices2 ([color=BLUE]entnext[/color] ([color=BLUE]cdr[/color] ([color=BLUE]assoc[/color] -1 l))))
  7.        )
  8.    )
  9.    
  10.    ([color=BLUE]defun[/color] _vertices1 ( l [color=BLUE]/[/color] p )
  11.        ([color=BLUE]if[/color] ([color=BLUE]setq[/color] p ([color=BLUE]assoc[/color] 10 l))
  12.            ([color=BLUE]cons[/color] ([color=BLUE]cdr[/color] p) (_vertices1 ([color=BLUE]cdr[/color] ([color=BLUE]member[/color] p l))))
  13.        )
  14.    )
  15.    ([color=BLUE]defun[/color] _vertices2 ( e )
  16.        ([color=BLUE]if[/color] ([color=BLUE]eq[/color] [color=MAROON]"VERTEX"[/color] ([color=BLUE]cdr[/color] ([color=BLUE]assoc[/color] 0 ([color=BLUE]entget[/color] e))))
  17.            ([color=BLUE]cons[/color] ([color=BLUE]cdr[/color] ([color=BLUE]assoc[/color] 10 ([color=BLUE]entget[/color] e))) (_vertices2 ([color=BLUE]entnext[/color] e)))
  18.        )
  19.    )
  20.    
  21.    ([color=BLUE]defun[/color] _pointaverage ( l [color=BLUE]/[/color] x )
  22.        ([color=BLUE]setq[/color] x ([color=BLUE]length[/color] l))
  23.        ([color=BLUE]mapcar[/color] '[color=BLUE]/[/color] ([color=BLUE]apply[/color] '[color=BLUE]mapcar[/color] ([color=BLUE]cons[/color] '[color=BLUE]+[/color] l)) ([color=BLUE]list[/color] x x))
  24.    )
  25.    ([color=BLUE]if[/color] ([color=BLUE]setq[/color] s ([color=BLUE]ssget[/color] [color=MAROON]"_:L"[/color] '((0 . [color=MAROON]"*POLYLINE"[/color]))))
  26.        ([color=BLUE]repeat[/color] ([color=BLUE]setq[/color] i ([color=BLUE]sslength[/color] s))
  27.            ([color=BLUE]setq[/color] e ([color=BLUE]entget[/color] ([color=BLUE]ssname[/color] s ([color=BLUE]setq[/color] i ([color=BLUE]1-[/color] i)))))
  28.            ([color=BLUE]if[/color] ([color=BLUE]entmake[/color]
  29.                    ([color=BLUE]list[/color]
  30.                       '(0 . [color=MAROON]"CIRCLE"[/color])
  31.                        ([color=BLUE]assoc[/color] 008 e)
  32.                        ([color=BLUE]cons[/color]  010 (_pointaverage (_vertices e)))
  33.                        ([color=BLUE]cons[/color]  040 r)
  34.                        ([color=BLUE]cond[/color] (([color=BLUE]assoc[/color] 006 e)) ('(006 . [color=MAROON]"BYLAYER"[/color])))
  35.                        ([color=BLUE]cond[/color] (([color=BLUE]assoc[/color] 039 e)) ('(039 . 0.0)))
  36.                        ([color=BLUE]cond[/color] (([color=BLUE]assoc[/color] 062 e)) ('(062 . 256)))
  37.                        ([color=BLUE]cond[/color] (([color=BLUE]assoc[/color] 370 e)) ('(370 . -1)))
  38.                        ([color=BLUE]assoc[/color] 210 e)
  39.                        ([color=BLUE]assoc[/color] 410 e)
  40.                    )
  41.                )
  42.                ([color=BLUE]entdel[/color] ([color=BLUE]cdr[/color] ([color=BLUE]assoc[/color] -1 e)))
  43.            )
  44.        )
  45.    )
  46.    ([color=BLUE]princ[/color])
  47. )
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 08:47:39 | 显示全部楼层
重复点的情况。。。
 
  1. (defun c:p2c ( / _vertices _vertices1 _vertices2 _uniquefuzz _pointaverage e i r s )
  2.    (setq r 0.1) ;; Circle Radius
  3.    (defun _vertices ( l )
  4.        (if (eq "LWPOLYLINE" (cdr (assoc 0 l)))
  5.            (_vertices1 l)
  6.            (_vertices2 (entnext (cdr (assoc -1 l))))
  7.        )
  8.    )
  9.    
  10.    (defun _vertices1 ( l / p )
  11.        (if (setq p (assoc 10 l))
  12.            (cons (cdr p) (_vertices1 (cdr (member p l))))
  13.        )
  14.    )
  15.    (defun _vertices2 ( e )
  16.        (if (eq "VERTEX" (cdr (assoc 0 (entget e))))
  17.            (cons (cdr (assoc 10 (entget e))) (_vertices2 (entnext e)))
  18.        )
  19.    )
  20.    (defun _uniquefuzz ( l f )
  21.        (if l
  22.            (cons (car l)
  23.                (_uniquefuzz
  24.                    (vl-remove-if '(lambda ( x ) (equal x (car l) f)) (cdr l))
  25.                    f
  26.                )
  27.            )
  28.        )
  29.    )
  30.    
  31.    (defun _pointaverage ( l / x )
  32.        (setq x (length l))
  33.        (mapcar '/ (apply 'mapcar (cons '+ l)) (list x x))
  34.    )
  35.    (if (setq s (ssget "_:L" '((0 . "*POLYLINE"))))
  36.        (repeat (setq i (sslength s))
  37.            (setq e (entget (ssname s (setq i (1- i)))))
  38.            (if (entmake
  39.                    (list
  40.                       '(0 . "CIRCLE")
  41.                        (assoc 008 e)
  42.                        (cons  010 (_pointaverage (_uniquefuzz (_vertices e) 1e-))
  43.                        (cons  040 r)
  44.                        (cond ((assoc 006 e)) ('(006 . "BYLAYER")))
  45.                        (cond ((assoc 039 e)) ('(039 . 0.0)))
  46.                        (cond ((assoc 062 e)) ('(062 . 256)))
  47.                        (cond ((assoc 370 e)) ('(370 . -1)))
  48.                        (assoc 210 e)
  49.                        (assoc 410 e)
  50.                    )
  51.                )
  52.                (entdel (cdr (assoc -1 e)))
  53.            )
  54.        )
  55.    )
  56.    (princ)
  57. )
回复

使用道具 举报

15

主题

68

帖子

53

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
76
发表于 2022-7-6 08:52:50 | 显示全部楼层
 
李,
代码运行得很好。
 
非常感谢您的关注。
 
当做
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-8-15 07:09 , Processed in 1.928069 second(s), 70 queries .

© 2020-2025 乐筑天下

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