乐筑天下

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

[编程交流] Lisp绘制样条曲线,得到P1&

[复制链接]

7

主题

24

帖子

17

银币

初来乍到

Rank: 1

铜币
35
发表于 2022-7-6 07:50:05 | 显示全部楼层 |阅读模式
我想知道是否有人可以帮助我用lisp绘制样条曲线,并获得样条曲线前两点的坐标。我需要他们在样条曲线的第一个点插入一个块,并定义点之间的角度。
我从下面的lisp开始,但我无法使其正常工作,命令提示与标准AutoCAD样条线的提示不同,它提示和。我必须点击回车键几次才能退出程序。
我正在使用AutoCAD 2011。
非常感谢。
 
 
  1. (defun c: DrawSpline ()
  2.   (command "._spline")
  3.   (while (> (getvar "cmdactive") 0)
  4.   (command pause)
  5. )
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 08:03:25 | 显示全部楼层
考虑以下代码:
 
  1. (defun c:DrawSpline ( / a e p )
  2.    (setq e (entlast))
  3.    (initcommandversion)
  4.    (command "._spline")
  5.    (while (< 0 (getvar 'cmdactive))
  6.        (command pause)
  7.    )
  8.    (if (not (eq e (setq e (entlast))))
  9.        (progn
  10.            (setq p (vlax-curve-getstartpoint e)
  11.                  a (angle '(0.0 0.0 0.0) (vlax-curve-getfirstderiv e (vlax-curve-getstartparam e)))
  12.            )
  13.        )
  14.    )
  15.    (princ)
  16. )
  17. (vl-load-com) (princ)

 
在上例中,变量“p”是样条曲线的起点,变量“a”是起点处切线的角度。
 
我还建议您阅读关于在您的帖子中格式化代码的代码发布指南。
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 08:06:40 | 显示全部楼层
大概
 
  1. (defun c:Test (/ p1 p2)
  2. (if (and (setq p1 (getpoint "\n First point :"))
  3.           (setq p2 (getpoint "\n Second point :" p1))
  4.      )
  5.    (command "_.spline" "_non" p1 "_non" p2)
  6.    (while (> (getvar 'cmdactive) 0)
  7.      (command pause)
  8.    )
  9. )
  10. (princ)
  11. )
回复

使用道具 举报

4

主题

2143

帖子

2197

银币

限制会员

铜币
-24
发表于 2022-7-6 08:13:41 | 显示全部楼层
阿雷波,
 
请阅读代码发布指南并编辑您的帖子。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 08:26:09 | 显示全部楼层
 
不客气,阿雷波
 
使用initcommandversion函数可以更改提示,该函数将命令初始化为特定(或最新)版本。
回复

使用道具 举报

53

主题

302

帖子

249

银币

后起之秀

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

铜币
265
发表于 2022-7-6 08:31:16 | 显示全部楼层
嗨,塔瓦,
是否可以扩展代码以绘制三条独立的线:p1 p2、p3 p4和从这两条线的交点到第五个点的另一条线,同时允许在获取点之前缩放窗口,并在获取点之后每次缩放上一个?。这有一个道路设计应用程序。
当做
芦荟
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 08:40:07 | 显示全部楼层
 
代码如何从这两条线的交点绘制三条独立的线和另一条线???
 
你能更详细地解释一下你的目标吗?
 
你想要样条的法线?
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 08:42:57 | 显示全部楼层
???
 
  1. (defun c:test ( / ip p1 p2 p3 p4 p5 )
  2.    (if
  3.        (and
  4.            (setq p1 (getpoint "\n1st Point: "))
  5.            (setq p2 (getpoint "\n2nd Point: " p1))
  6.            (setq p3 (getpoint "\n3rd Point: "))
  7.            (setq p4 (getpoint "\n4th Point: " p3))
  8.        )
  9.        (if (setq ip (inters p1 p2 p3 p4 nil))
  10.            (if (setq p5 (getpoint "\n5th Point: " ip))
  11.                (mapcar
  12.                    (function
  13.                        (lambda ( a b )
  14.                            (entmake
  15.                                (list
  16.                                   '(0 . "LINE")
  17.                                    (cons 10 (trans a 1 0))
  18.                                    (cons 11 (trans b 1 0))
  19.                                )
  20.                            )
  21.                        )
  22.                    )
  23.                    (list p1 p3 ip)
  24.                    (list p2 p4 p5)
  25.                )
  26.            )
  27.            (princ "\nLines are Parallel.")
  28.        )
  29.    )
  30.    (princ)
  31. )
回复

使用道具 举报

53

主题

302

帖子

249

银币

后起之秀

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

铜币
265
发表于 2022-7-6 08:56:11 | 显示全部楼层
李·麦克,
非常感谢你。代码用于获取这三行。实际上,第三条线在前两条线夹角的平分线上。然而,我需要放大覆盖五个点的区域,然后再发出命令,每次给出点后也需要缩小。
塔尔瓦特,
我的目标是在AutoCAD中加载的corridoor测量图上给出这些点,并通过迭代计算圆曲线的最佳半径、缓和曲线(螺旋或回旋)的最佳长度,以适应极限内的超高和驾驶舒适性,具体取决于设计速度的道路类型,所有这些都符合道路项目实施所在国的设计标准。
当做
芦荟
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-9 21:44 , Processed in 0.649807 second(s), 70 queries .

© 2020-2025 乐筑天下

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