乐筑天下

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

[编程交流] 改进的折线Lisp???

[复制链接]

11

主题

24

帖子

13

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
55
发表于 2022-7-6 14:23:56 | 显示全部楼层 |阅读模式
我想知道有没有人能帮上忙?
 
我需要一条多段线(保留弧/半径函数),它有3个元素(左侧、中心、右侧),都有颜色和宽度定义。例如
 
左侧元素。颜色–黄色,宽度–0.1
中心元素。颜色–白色,宽度–0.2
右侧元素。颜色–黄色,宽度–0.1
 
因此,总宽度为0.4。
见附件。
 
我尝试过多行,但这不起作用,多段线更灵活。目前,我正在通过复制和抵消来实现这一点,如果你只做了几次,这是可以的。用于路面标线**打呵欠**
 
任何帮助都将不胜感激。
 
干杯
 
H
152400p8f8sm816scs2xb1.jpg
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 14:30:19 | 显示全部楼层
不是我最好的,但应该做的工作:眨眼:
 
  1. (defun c:rdMark (/ pObj off1 off2)
  2. (vl-load-com)
  3. (command "_pline")
  4. (while (> (getvar "CMDACTIVE") 0)
  5.    (command pause))
  6. (setq pObj (vlax-ename->vla-object
  7.               (entlast)))
  8. (vla-put-color pObj acWhite)
  9. (vla-put-ConstantWidth pObj 0.2)
  10. (setq off1 (vlax-safearray->list
  11.               (vlax-variant-value
  12.                 (vla-offset pObj 0.15)))
  13.        off2 (vlax-safearray->list
  14.               (vlax-variant-value
  15.                 (vla-offset pObj -0.15))))
  16. (mapcar
  17.    (function
  18.      (lambda (x)
  19.        (vla-put-color x acYellow)
  20.          (vla-put-ConstantWidth x 0.1)))
  21.    (append Off1 Off2))
  22. (princ))
回复

使用道具 举报

11

主题

24

帖子

13

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
55
发表于 2022-7-6 14:33:28 | 显示全部楼层
李,
 
这真管用!印象深刻,天才我受到启发学习了这些东西,但现在我认为我有足够的能力修改它以适应不同的标记
 
非常感谢伴侣。
 
哈里斯
印度
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 14:37:54 | 显示全部楼层
 
很乐意帮忙
 
如果你对我发布的代码有任何问题,尽管问。
 
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 14:44:50 | 显示全部楼层
作为另一种选择,另一种表达LISP的方式是:
 
但是,就速度而言,mapcar很慢:
 
此外,如果要转换已绘制的多段线:
 
  1. (defun c:rdMark3 (/ ss off1 off2)
  2. (vl-load-com)
  3. (if (setq ss (ssget '((0 . "LWPOLYLINE"))))
  4.    (foreach pObj (mapcar 'vlax-ename->vla-object
  5.                    (vl-remove-if 'listp
  6.                      (mapcar 'cadr (ssnamex ss))))
  7.      (vla-put-color pObj acWhite)
  8.      (vla-put-ConstantWidth pObj 0.2)
  9.      (setq off1 (vlax-safearray->list
  10.                   (vlax-variant-value
  11.                     (vla-offset pObj 0.15)))
  12.            off2 (vlax-safearray->list
  13.                   (vlax-variant-value
  14.                     (vla-offset pObj -0.15))))
  15.      (mapcar
  16.        (function
  17.          (lambda (x)
  18.            (vla-put-color x acYellow)
  19.            (vla-put-ConstantWidth x 0.1)))
  20.        (append Off1 Off2))))
  21. (princ))

希望这有帮助
 
回复

使用道具 举报

11

主题

24

帖子

13

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
55
发表于 2022-7-6 14:49:54 | 显示全部楼层
谢谢李,
 
转换lisp(rdmark3)确实非常有用。我是一个非常初学者,当谈到写Lisp程序,我有几本电子书和参考指南,但仍然非常非常基本的水平自己。
“需要更多练习”
 
我会检查你的编码,并尝试拼凑出方法学。。。(乍一看有点超前)
 
如果我能通过这个论坛给你发几品脱,我会的
 
为你的帮助干杯。
 
哈里斯
回复

使用道具 举报

6

主题

249

帖子

247

银币

初来乍到

Rank: 1

铜币
30
发表于 2022-7-6 14:52:30 | 显示全部楼层
 
李,如果我想用黄色在一边,另一种颜色在中间白色的另一边来构造这条线,我需要使用mapcar两次,然后用颜色语句分别附加off1和off2吗?(或者给我一个线索?)
史蒂夫
回复

使用道具 举报

58

主题

3353

帖子

33

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1761
发表于 2022-7-6 15:00:13 | 显示全部楼层
 
也许这会有所帮助,因为地图车容易混淆:
 
  1. 3
回复

使用道具 举报

CAB

29

主题

781

帖子

430

银币

中流砥柱

Rank: 25

铜币
526
发表于 2022-7-6 15:03:30 | 显示全部楼层
这可能是我处理代码的方式。还要注意,当您处理少量数据时
使用今天的计算机,速度通常不是问题。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 15:09:51 | 显示全部楼层
 
没错,我只是出于兴趣才把它包括进去的
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-5 01:02 , Processed in 0.608334 second(s), 75 queries .

© 2020-2025 乐筑天下

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