乐筑天下

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

[编程交流] 沿多段线绘制点

[复制链接]

6

主题

26

帖子

22

银币

初来乍到

Rank: 1

铜币
40
发表于 2022-7-5 22:13:26 | 显示全部楼层 |阅读模式
我面临的新问题是:我将直线和圆弧连接到一条多段线。
 
我想沿着多段线创建点,距离第一个多段线顶点有严格定义的距离。
 
这都是关于2D的。
 
任何想法都可以。
 
谢谢
回复

使用道具 举报

0

主题

39

帖子

39

银币

初来乍到

Rank: 1

铜币
0
发表于 2022-7-5 22:18:18 | 显示全部楼层
标出所需的点/节点,例如,将其称为“点1”
 
命令测量,选择“pline”,指定块“Point1”,然后间隔距离。
 
Lisp应该很容易编写,但我不确定它是否会大大加快上述过程。。
回复

使用道具 举报

6

主题

26

帖子

22

银币

初来乍到

Rank: 1

铜币
40
发表于 2022-7-5 22:21:56 | 显示全部楼层
谢谢,它可以“手动”工作。
然而,我需要lisp代码,因为在创建这些点之后,我需要做更多的事情。
 
这个折线实际上是水平对齐。剖面线(垂直于路线)应通过所述创建点创建。问题是,如果在圆弧上的某个位置创建点,如何创建轮廓线。。。如何定义作为多段线一部分的圆弧中心?
 
有什么建议吗?
 
 
回复

使用道具 举报

0

主题

39

帖子

39

银币

初来乍到

Rank: 1

铜币
0
发表于 2022-7-5 22:23:44 | 显示全部楼层
我想我得到了你想要的,我知道午饭后我能想出什么。
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 22:29:00 | 显示全部楼层
Lisp程序
 
如果您先拾取点,然后再绘制多段线,则会绘制一条线
 
好的,现在希望每条线都有一定的长度,因为你们有一条线,你们可以用最后一条线来获得线的角度,然后在两个方向上重新绘制
 
根据需要重复
回复

使用道具 举报

0

主题

39

帖子

39

银币

初来乍到

Rank: 1

铜币
0
发表于 2022-7-5 22:31:55 | 显示全部楼层
看了贝恩的问题后,我仍然认为该措施是可行的。
参见图。
忘记将此添加到图片中。-创建的块具有中点插入点。
 
这是命令行。
 
 
刚意识到你是个有礼貌的人。。也许那个领域的人会有更好的解决方案。。
回复

使用道具 举报

6

主题

26

帖子

22

银币

初来乍到

Rank: 1

铜币
40
发表于 2022-7-5 22:36:31 | 显示全部楼层
干得好,但我的距离并不总是一样的。例如,第一条轮廓线可能距离顶点30.000m,接下来距离第一个顶点42.341m。。。
 
是的,我是一个文明人。
 
谢谢你的帮助。
 
 
回复

使用道具 举报

1

主题

1069

帖子

1050

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
69
发表于 2022-7-5 22:38:18 | 显示全部楼层
我没有时间测试它
试一试,但对未使用的部分进行注释
在***,
如果您不想按图片所示插入块
 
  1. (defun C:test(/ ang cumm_dist dis dist_list leng obj pt)
  2. (vl-load-com)
  3. ;; build master list of the distances, starting from 0.0 - important!
  4. (setq dist_list '(0.0 1000.0 2000.0 3000.0 4000.0 5000.0))
  5. (setq cumm_dist (apply '+ dist_list))
  6. (setq dis 0.0)
  7. (setq obj (vlax-ename->vla-object (car (entsel "\n >> Select profile >>"))))
  8. (setq leng (vlax-curve-getdistatpoint obj (vlax-curve-getendpoint obj)))
  9. ;; check if pline length is not less than the cumulative distance
  10. (if (< leng cumm_dist)
  11.    (progn
  12.      (alert "Pline length is less then summary distance")
  13.      (princ)
  14.      )
  15.    
  16. (while (< dis cumm_dist)
  17. (setq dis (+ dis (car dist_list)))
  18. (setq pt (vlax-curve-getpointatdist obj dis))
  19. ;;;***
  20. ;;to insert block named "tick":
  21. ;; get angle:
  22. (setq ang (angle '(0 0 0)
  23.               (vlax-curve-getfirstderiv obj
  24.                 (vlax-curve-getparamatpoint obj pt))))
  25. ;;insert block:  
  26. (vlax-invoke (vla-get-modelspace (vla-get-activedocument (vlax-get-acad-object)))
  27.    'InsertBlock pt "tick" 1 1 1 ang);***
  28. ;;or draw point:
  29. (vlax-invoke (vla-get-modelspace (vla-get-activedocument (vlax-get-acad-object)))
  30.    'AddPoint pt)
  31. (setq dist_list (cdr dist_list))
  32. )
  33. )
  34. (princ)
  35. )

 
~'J'~
回复

使用道具 举报

6

主题

26

帖子

22

银币

初来乍到

Rank: 1

铜币
40
发表于 2022-7-5 22:43:17 | 显示全部楼层
我不知道该说什么。。。谢谢你,胖子,干得好。它工作得很好。
我不熟悉visual lisp,但我将尝试使用basic lisp继续下一步。
 
非常感谢你!!!
 
回复

使用道具 举报

6

主题

26

帖子

22

银币

初来乍到

Rank: 1

铜币
40
发表于 2022-7-5 22:45:08 | 显示全部楼层
另一个类似的问题:
如果我有相同的多段线,并在多段线上的某些位置手动创建轮廓线(作为块或仅仅是线),是否有可能编写代码来查找这些线(或块)在多段线上的位置,并显示它们与第一个顶点的距离(在命令提示符下或写入文件中)?
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-8-18 18:37 , Processed in 2.852686 second(s), 73 queries .

© 2020-2025 乐筑天下

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