乐筑天下

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

[编程交流] 多段线到圆

[复制链接]

3

主题

14

帖子

11

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-6 14:42:34 | 显示全部楼层 |阅读模式
也许我必须把这个贴在这里?
 
http://www.cadtutor.net/forum/showthread.php?p=231922#post231922
 
有专家能帮我开发一个Lisp例程吗?
我认为要做到这一点并不容易。
 
/automicro公司
回复

使用道具 举报

0

主题

252

帖子

290

银币

限制会员

铜币
-8
发表于 2022-7-6 14:46:41 | 显示全部楼层
我们要假设多段线是圆形的吗?如果没有,您打算如何定位中心?你想要的其实很简单,确保多段线是闭合的,得到面积,做一些数学来找到一个相同面积的圆,使用多段线面积的质心,然后定位圆。
回复

使用道具 举报

4

主题

940

帖子

961

银币

初来乍到

Rank: 1

铜币
12
发表于 2022-7-6 14:51:00 | 显示全部楼层
我一定很无聊。。。没有错误检查,没有广泛测试,速度有点慢
使用CmdrDuh的想法。。。
  1. (defun c:test (/ ss1 num cnt ename obj rp ar rad)
  2. (vl-load-com)
  3. (setq ss1 (ssget '((0 . "*polyline")))
  4.    num (sslength ss1)
  5.    cnt 0)
  6. (repeat num
  7.    (setq ename (ssname ss1 cnt))
  8.    (setq obj (vlax-ename->vla-object ename))
  9.    (vlax-put-property obj 'Closed 1)
  10.    (vl-cmdf "region" ename "")
  11.    (setq obj (vlax-ename->vla-object (entlast)))
  12.        (setq ar (vlax-get-property obj 'Area)
  13.      rp (vlax-safearray->list (vlax-variant-value (vlax-get-property obj 'Centroid)))
  14.      rad (sqrt (/ ar pi))
  15.      )
  16.    (entdel (entlast));remove this line if you want to keep original
  17.    (vl-cmdf "circle" rp rad)
  18. (setq cnt (1+ cnt))
  19. )
  20. (princ)
  21. )        
回复

使用道具 举报

0

主题

252

帖子

290

银币

限制会员

铜币
-8
发表于 2022-7-6 14:54:08 | 显示全部楼层
我只是想大声说出来,哈哈,但谢谢你让它成为现实
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 14:57:04 | 显示全部楼层
很好的Lisp程序的快速键入一个-不错的拉里。
 
我不想挑剔,但我只想做一些美学上的改变:
 
  1. [b][color=RED]([/color][/b][b][color=BLUE]defun[/color][/b] c:test  [b][color=RED]([/color][/b][b][color=BLUE]/[/color][/b] ss obj rp ar rad[b][color=RED])[/color][/b]
  2. [b][color=RED]([/color][/b][b][color=BLUE]vl-load-com[/color][/b][b][color=RED])[/color][/b]
  3. [b][color=RED]([/color][/b][b][color=BLUE]if[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] ss [b][color=RED]([/color][/b][b][color=BLUE]ssget[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]list[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]cons[/color][/b] [b][color=#009900]0[/color][/b] [b][color=#ff00ff]"*POLYLINE"[/color][/b][b][color=RED])[/color][/b]
  4.                            [b][color=RED]([/color][/b][b][color=BLUE]if[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]getvar[/color][/b] [b][color=#ff00ff]"CTAB"[/color][/b][b][color=RED])[/color][/b]
  5.                              [b][color=RED]([/color][/b][b][color=BLUE]cons[/color][/b] [b][color=#009900]410[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]getvar[/color][/b] [b][color=#ff00ff]"CTAB"[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
  6.                              [b][color=RED]([/color][/b][b][color=BLUE]cons[/color][/b] [b][color=#009900]67[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]-[/color][/b] [b][color=#009900]1[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]getvar[/color][/b] [b][color=#ff00ff]"TILEMODE"[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
  7.    [b][color=RED]([/color][/b][b][color=BLUE]foreach[/color][/b] x [b][color=RED]([/color][/b][b][color=BLUE]mapcar[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=BLUE]vlax-ename->vla-object[/color][/b]
  8.                 [b][color=RED]([/color][/b][b][color=BLUE]vl-remove-if[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=BLUE]listp[/color][/b]
  9.                   [b][color=RED]([/color][/b][b][color=BLUE]mapcar[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=BLUE]cadr[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]ssnamex[/color][/b] ss[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
  10.      [b][color=RED]([/color][/b][b][color=BLUE]vlax-put-property[/color][/b] x [b][color=DARKRED]'[/color][/b]Closed [b][color=#009900]1[/color][/b][b][color=RED])[/color][/b]
  11.      [b][color=RED]([/color][/b][b][color=BLUE]vl-cmdf[/color][/b] [b][color=#ff00ff]"_region"[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vlax-vla-object->ename[/color][/b] x[b][color=RED])[/color][/b] [b][color=#ff00ff]""[/color][/b][b][color=RED])[/color][/b]
  12.      [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] obj [b][color=RED]([/color][/b][b][color=BLUE]vlax-ename->vla-object[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]entlast[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
  13.            ar  [b][color=RED]([/color][/b][b][color=BLUE]vlax-get-property[/color][/b] obj [b][color=DARKRED]'[/color][/b]Area[b][color=RED])[/color][/b]
  14.            rp  [b][color=RED]([/color][/b][b][color=BLUE]vlax-safearray->list[/color][/b]
  15.                  [b][color=RED]([/color][/b][b][color=BLUE]vlax-variant-value[/color][/b]
  16.                    [b][color=RED]([/color][/b][b][color=BLUE]vlax-get-property[/color][/b] obj [b][color=DARKRED]'[/color][/b]Centroid[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
  17.            rad [b][color=RED]([/color][/b][b][color=BLUE]sqrt[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]/[/color][/b] ar pi[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
  18.      [b][color=RED]([/color][/b][b][color=BLUE]vla-delete[/color][/b] obj[b][color=RED])[/color][/b] [i][color=#990099]; -> Remove to Keep Original[/color][/i]
  19.      [b][color=RED]([/color][/b][b][color=BLUE]vl-cmdf[/color][/b] [b][color=#ff00ff]"_circle"[/color][/b] rp rad[b][color=RED])[/color][/b][b][color=RED])[/color][/b]
  20.    [b][color=RED]([/color][/b][b][color=BLUE]princ[/color][/b] [b][color=#ff00ff]"\n<!> Nothing Selected <!>"[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
  21. [b][color=RED]([/color][/b][b][color=BLUE]princ[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
回复

使用道具 举报

0

主题

252

帖子

290

银币

限制会员

铜币
-8
发表于 2022-7-6 15:00:28 | 显示全部楼层
李,你是怎么把代码用颜色编码的?
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 15:01:58 | 显示全部楼层
我编写了一个LISP来编写一个带有[color]标记的文件
回复

使用道具 举报

3

主题

14

帖子

11

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-6 15:05:32 | 显示全部楼层
难以置信的好,这为我节省了很多工作。
感谢lpseifert和Lee Mac
 
但他发现许多多段线是双重存储的
有没有简单的方法来删除存储的双元素?
 
 
你们俩似乎都喜欢摩托车,真是巧合
我自己开宝马F800GS:)
回复

使用道具 举报

18

主题

434

帖子

422

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
94
发表于 2022-7-6 15:09:32 | 显示全部楼层
也许杀伤力过大?
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 15:12:49 | 显示全部楼层
 
我建议使用Express Tools的OVERKILL,这比我能为您编写的任何东西都要好。
 
 
 
好看的自行车-有点高,但骑起来很平稳。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-5 00:27 , Processed in 0.344444 second(s), 72 queries .

© 2020-2025 乐筑天下

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