乐筑天下

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

[编程交流] LISP绘制样条线或三维Plin

[复制链接]

5

主题

45

帖子

40

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-6 15:04:47 | 显示全部楼层 |阅读模式
我后LISP绘制样条线或三维样条线从点或线,如所附图纸。
非常感谢您的帮助。干杯
线条2样条-。拉链
回复

使用道具 举报

4

主题

327

帖子

324

银币

初来乍到

Rank: 1

铜币
19
发表于 2022-7-6 15:12:32 | 显示全部楼层
尝试一下:
 
  1. (vl-load-com)
  2. ;;; to make a 3d polyline*******************************************
  3. (defun c:pol (/ adoc spc ss cnt plst 3dline)
  4. (setq adoc(vla-get-activedocument(vlax-get-acad-object)))
  5. (setq spc(vlax-get adoc
  6. (if (equal (getvar "cvport") 1)
  7. 'PaperSpace
  8. 'ModelSpace
  9. );_if
  10. )
  11. );_setq
  12. (setq ss (ssget '((0 . "POINT"))));_select only point objects
  13. (if ss
  14. (progn
  15. (setq cnt 0);_loop counter
  16. (setq plst '());_empty list
  17.   (while (< cnt (sslength ss))
  18. (setq plst (cons(cdr(assoc 10(entget (ssname ss cnt))))plst));_make point list
  19. (setq cnt (1+ cnt));_incerase counter
  20.     );_while
  21. (setq 3dline (vla-add3dpoly ;_make 3d polyline
  22.       spc
  23.       (vlax-safearray-fill
  24. (vlax-make-safearray vlax-vbDouble
  25. (cons 0 (1- (length (apply 'append plst)))))
  26. (apply 'append plst)))
  27.       );_setq add 3dpoly
  28. );_progn
  29. );_if
  30. (princ)
  31.   );_defun
  32. ;;; to make a 3d  spline******************************************
  33. (defun c:spl (/ adoc spc ss cnt plst 3dline stpt ept)
  34. (setq adoc(vla-get-activedocument(vlax-get-acad-object)))
  35. (setq spc(vlax-get adoc
  36. (if (equal (getvar "cvport") 1)
  37. 'PaperSpace
  38. 'ModelSpace
  39. );_if
  40. )
  41. );_setq
  42. (setq ss (ssget '((0 . "POINT"))))
  43. (if ss
  44. (progn
  45. (setq cnt 0);_loop counter
  46. (setq plst '());_empty list
  47.   (while (< cnt (sslength ss))
  48. (setq plst (cons(cdr(assoc 10(entget (ssname ss cnt))))plst))
  49. (setq cnt (1+ cnt));_incerase counter
  50.     );_while
  51. (setq stpt (vlax-3d-point '(0.0 0.0 0.0)));_start pt for spline
  52. (setq ept (vlax-3d-point '(0.0 0.0 0.0)));_end pt for spline
  53. (setq cline (vla-addspline
  54.       spc
  55.       (vlax-safearray-fill
  56. (vlax-make-safearray vlax-vbDouble
  57. (cons 0 (1- (length (apply 'append plst)))))
  58. (apply 'append plst))
  59.       stpt
  60.       ept
  61.       )
  62.       );_setq add 3d spline
  63. );_progn
  64. );_if
  65. (princ)
  66.   );_defun
回复

使用道具 举报

0

主题

119

帖子

119

银币

初来乍到

Rank: 1

铜币
0
发表于 2022-7-6 15:17:24 | 显示全部楼层
^JohnM,请原谅我的愚蠢,但是程序怎么知道按照什么顺序来执行这些点呢?
回复

使用道具 举报

0

主题

269

帖子

279

银币

限制会员

铜币
-4
发表于 2022-7-6 15:27:56 | 显示全部楼层
没有试过,但看起来不错。
 
..您不需要测试点的顺序是否正确吗?这取决于点的创建方式。它们在选择集中的顺序可能不沿多段线。。
 
**哎呀,同样的问题太慢了
回复

使用道具 举报

4

主题

327

帖子

324

银币

初来乍到

Rank: 1

铜币
19
发表于 2022-7-6 15:30:02 | 显示全部楼层
关于点,你有一个很好的观点,所以让我指出,你应该以正确的顺序创建点。
你可以写一个例程,把它们按顺序排列,但取决于你到底在做什么,它可能会变得非常复杂,我不相信你能涵盖所有可以计算的方法。
回复

使用道具 举报

5

主题

45

帖子

40

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-6 15:36:05 | 显示全部楼层
非常感谢您抽出时间。
我重新上传了另一个带有ID点的图形。
LISP将按照此顺序创建样条线或三维多段线。还包括坐标的文本文件。
点和线2样条曲线。拉链
坐标点2样条。txt文件
回复

使用道具 举报

5

主题

194

帖子

193

银币

初来乍到

Rank: 1

铜币
24
发表于 2022-7-6 15:42:10 | 显示全部楼层
嘿Phiphi,
 
如果信息可以来自包含X、Y和Z值的文件,您考虑过使用脚本文件吗?
 
对于三维多边形
  1. ;;Turn off osnap
  2. osmode
  3. 0
  4. ;;start the 3d polyline command
  5. 3dpoly
  6. 60.8628,72.8892,0.6110
  7. 56.3497,70.7362,0.6110
  8. 51.8366,68.5842,0.6110
  9. 47.3235,66.4322,0.6110
  10. 42.9999,63.9422,0.6110
  11. 39.4092,60.4812,0.6110
  12. 36.7864,56.2392,0.6110
  13. 35.2290,51.4962,1.0850
  14. 33.9393,46.6652,1.3060
  15. 32.6496,41.8352,0.7110
  16. 31.3600,37.0042,0.7110
  17. 29.6437,32.3202,0.7110
  18. 26.8343,28.1992,0.6890
  19. 23.0929,24.9022,0.6590
  20. 18.6520,22.6332,0.6290
  21. 13.7887,21.5262,0.5560
  22. 8.8277,20.9022,0.4150
  23. 3.8668,20.2782,0.2720
  24. -1.0941,19.6542,0.1450
  25. -6.0551,19.0312,0.0650
  26. -11.0160,18.4072,0.0000

 
对于样条曲线
 
  1. ;;Turn off osnap
  2. osmode
  3. 0
  4. ;;start the 3d polyline command
  5. spline
  6. 60.8628,72.8892,0.6110
  7. 56.3497,70.7362,0.6110
  8. 51.8366,68.5842,0.6110
  9. 47.3235,66.4322,0.6110
  10. 42.9999,63.9422,0.6110
  11. 39.4092,60.4812,0.6110
  12. 36.7864,56.2392,0.6110
  13. 35.2290,51.4962,1.0850
  14. 33.9393,46.6652,1.3060
  15. 32.6496,41.8352,0.7110
  16. 31.3600,37.0042,0.7110
  17. 29.6437,32.3202,0.7110
  18. 26.8343,28.1992,0.6890
  19. 23.0929,24.9022,0.6590
  20. 18.6520,22.6332,0.6290
  21. 13.7887,21.5262,0.5560
  22. 8.8277,20.9022,0.4150
  23. 3.8668,20.2782,0.2720
  24. -1.0941,19.6542,0.1450
  25. -6.0551,19.0312,0.0650
  26. -11.0160,18.4072,0.0000
回复

使用道具 举报

5

主题

45

帖子

40

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-6 15:49:24 | 显示全部楼层
从不使用脚本文件,但会学习并尝试。谢谢你,杰米。PP。
回复

使用道具 举报

63

主题

242

帖子

181

银币

后起之秀

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

铜币
319
发表于 2022-7-6 15:55:45 | 显示全部楼层
helo JohnM公司
能否改进lisp以从文件中绘制三维多段线(n x y x)n=点的三维多段线数x y z
谢谢你的努力
回复

使用道具 举报

0

主题

119

帖子

119

银币

初来乍到

Rank: 1

铜币
0
发表于 2022-7-6 15:59:06 | 显示全部楼层
哈哈,我知道你在那里做了什么。上次真的没注意到。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-4 21:10 , Processed in 0.476575 second(s), 72 queries .

© 2020-2025 乐筑天下

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