乐筑天下

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

[编程交流] 按X顺序绘制多段线

[复制链接]

5

主题

30

帖子

25

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-5 15:17:17 | 显示全部楼层 |阅读模式
你好
 
我需要一个lisp例程,它可以通过按x或y值顺序连接选定的线和顶点来绘制新的多段线。(增加或减少无关紧要)
 
非常感谢你
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 15:28:02 | 显示全部楼层
可能有帮助的双重排序。
 
Ps网站有问题吗?
 
  1. ; sorts on 1st two items
  2. (setq lst (vl-sort lst '(lambda (x y)
  3. (cond
  4. ((= (cadr x)(cadr y))
  5. (< (car x)(car y)))
  6. ((< (cadr x)(cadr y)))
  7. ))))
回复

使用道具 举报

5

主题

30

帖子

25

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-5 15:33:58 | 显示全部楼层
 
我将向命令行写入什么来运行此例程?
 
PS:是的,网站现在有问题。
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 15:37:40 | 显示全部楼层
你需要发布一些你想要实现的想法。互联网问题使我的水晶球无法工作。
回复

使用道具 举报

5

主题

30

帖子

25

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-5 15:46:13 | 显示全部楼层
 
我有数百条单独绘制的多段线。我需要在其上绘制新的多段线,但新的多段线需要按X值或(可选Y值)的增减顺序绘制
 
非常感谢。
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 15:48:01 | 显示全部楼层
仍然在等待一个图像或dwg无法帮助没有这一点。
回复

使用道具 举报

5

主题

30

帖子

25

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-5 15:55:56 | 显示全部楼层
 
无法显示内容。需要Adobe Flash。 
请查看链接中的视频。白色多边形是存在的,我有数百个。洋红色线是我想画的,以x值或有时是y值的顺序。我希望现在一切都清楚了。
 
非常感谢。
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 16:01:34 | 显示全部楼层
好的,现在可以很容易地使用基于X或Y的点列表进行排序。我的第一篇文章是关于X和Y的排序,稍后会尝试发布一些东西,现在需要做一些工作。
 
  1. ; pline co-ords example
  2. ; By Alan H
  3. (defun getcoords (ent)
  4. (vlax-safearray->list
  5.    (vlax-variant-value
  6.      (vlax-get-property
  7.    obj
  8.    "Coordinates"
  9.      )
  10.    )
  11. )
  12. )
  13. ; convert now to a list of xy as co-ords are x y x y x y if 3d x y z x y z
  14. (defun co-ords2xy ()
  15. (setq len (length co-ords))
  16. (if (= (vla-get-objectname obj) "AcDbLwpolyline")
  17. (setq numb (/ len 2)) ; even and odd check required
  18. (setq numb (/ len 2)))
  19. (setq I 0)
  20. (repeat numb
  21. (setq xy (list (nth i co-ords)(nth (+ I 1) co-ords) ))
  22. ; odd (setq xy (list (nth i co-ords)(nth (+ I 1) co-ords)(nth (+ I 2) co-ords) ))
  23. (setq co-ordsxy (cons xy co-ordsxy))
  24. (setq I (+ I 2))
  25. )
  26. )
  27. ; program starts here
  28. (defun C:ahjoinX ( / co-ordsxy lst)
  29. (setq obj (vlax-ename->vla-object (car (entsel "\nplease pick pline"))))
  30. (setq co-ords (getcoords obj))
  31. (co-ords2xy)
  32. (setq lst (vl-sort co-ordsxy
  33. (function (lambda (e1 e2)
  34. (< (car e1) (car e2)))))
  35. )
  36. (command "_pline")
  37. (while (= (getvar "cmdactive") 1 )
  38. (repeat (setq x (length lst))
  39. (command (nth  (setq x (- x 1)) lst))
  40. )
  41. (command "")
  42. )
  43. (princ)
  44. )
  45. (C:ahjoinx)
回复

使用道具 举报

5

主题

30

帖子

25

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-5 16:06:12 | 显示全部楼层
非常感谢。这适用于X值,但我必须每次“appload”lisp才能运行它吗?有运行lisp的命令吗?
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 16:16:39 | 显示全部楼层
代码更改为命令行版本类型ahjoinx,用于下一个,它将在加载时执行第一个操作。只要快速输入旧代码(啊:joinx),它就会重复。
 
您还提到Y作为选择,这将在排序中使用cadr而不是汽车。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-14 13:04 , Processed in 1.089394 second(s), 73 queries .

© 2020-2025 乐筑天下

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