我第一次看到道路路线是样条曲线
一路上,没有水平曲线和/或直线段。
以下子例程将返回所需的所有数据
以列表形式填写表格。
填充,我留给你作为练习。
(defun offsetlist (/ en ent offl offr intv dtot dlst clst alst llst rlst olst)
(setq en (car (entsel))
ent(entget en)
offl 5.00
offr 5.00
intv 10.0
dtot (vlax-curve-getDistAtPoint en (vlax-curve-getendpoint en))
dlst (append
(in_range 0 dtot intv)
(list dtot)
)
clst (mapcar '(lambda (a) (vlax-curve-getPointAtDist en a)) dlst)
alst (mapcar '(lambda (a) (angleatpoint en a)) clst)
llst (mapcar '(lambda (a b) (polar a (+ b (/ pi 2)) offl)) clst alst)
rlst (mapcar '(lambda (a b) (polar a (- b (/ pi 2)) offr)) clst alst)
olst (mapcar '(lambda (a b c d) (list (rtosta a 2 3) b c d)) dlst llst clst rlst)
)
)
;; ;
;; Return angle along curve, at specified point (on curve) ;
;; e - valid curve (ENAME or VLA-OBJECT) ;
;; p - point on curve ;
;; Alan J. Thompson, 11.04.10 ;
;; ;
(defun AngleAtPoint (e p)
(angle '(0. 0. 0.) (vlax-curve-getFirstDeriv e (vlax-curve-getParamAtPoint e p)))
)
;; ;
;; in_range by ElpanovEvgeniy (recursive) ;
;; ;
;; Similar to the Python Function ;
;; ;
(defun in_range (s e i)
(if (or (and (> i 0) (< s e)) (and (< i 0) (> s e)))
(cons s (in_range (+ i s) e i))
)
)
;; ;
;; rtosta by ymg September 2013 ;
;; ;
;; Arguments: sta, Real number to format as a Station ;
;; unit, 1 for Imperials, ;
;; 2 for Metrics. ;
;; prec, Integer for number of decimals ;
;; DIMZIN must be set to 0 or 1 outside this routine. ;
;; ;
;; Examples: (rtosta 0 1 0)-> "0+00" (rtosta 1328.325 1 2) -> "13+28.33";
;; (rtosta 0 2 0)-> "0+000"(rtosta 1328.325 2 2) -> "1+328.33";
;; ;
;; If sta is negative, format is as follow: ;
;; (rtosta -1328.325 1 2) -> "13-28.33" ;
;; (rtosta -1328.325 2 2) -> "1-328.33" ;
;; ;
(defun rtosta (sta unit prec / str a b dz)
(setq str (rtos (abs sta) 2 prec))
(while (< (strlen str) (if (= prec 0) (+ unit 2) (+ prec (+ unit 3))))
(setq str (strcat "0" str))
)
(setq a (if (= prec 0) (- (strlen str) unit) (- (strlen str) prec (+ unit 1)))
b (substr str 1 (- a 1))
a (substr str a)
)
(strcat b (if (minusp sta) "-" "+") a)
)
ymg公司 尊敬的先生,如何启动该代码???? 有人看过我附加的代码吗!!!???表格对齐。lsp要求用户选择路线并建立坐标表。我的帖子好像被忽视了! @阿尼迪亚,
简单键入(偏移列表),包括括号。
@Hippe013,
我确实看了,你的也做了。
但我相信OP想要一个罐装的解决方案。
ymg公司
这是罐装溶液。
校准表。lsp 我以为表格版只是第一个帖子,但到了表格,会检查第二个版本看起来对我们有用。 hippe 013先生,当我使用你的lisp时,我没有得到表上的任何坐标,缩放后绘制的偏移也消失了。这个消息就要来了,
命令:altable
选择路线对象:
输入站间距:10
输入左偏移距离:12
输入右偏移距离:18
选择表格的插入点:;错误:自动化错误。未找到密钥
我需要中心和两侧偏移表上的坐标, 阿尼迪亚,
使用常规acad创建新图形。并绘制一个简单的样条曲线,然后运行命令。
它仍然出错吗?我现在想不出这个bug是什么。您可以发布您试图在其中运行命令的dwg吗?我创建了一个新图形,创建了一条样条曲线,并运行了命令。这对我很有效。如果你能够发布一个命令不起作用的图形,也许我可以锁定错误发生的点。
至于偏移量,它们是以图形方式绘制的,在缩放时应该消失。
当做
hippe013 HIPPE先生,这就是问题所在,我将随附图纸向您发送一个示例。
校准表。lsp加载成功。键入ALTABLE开始。
命令:
命令:altable
选择路线对象:
输入站间距:10
输入左偏移距离:22
输入右偏移距离:33
选择表格的插入点:;错误:自动化错误。未找到密钥
这只是一个例子。如果可能的话,我想在直线和曲线上运行。。。。
需要帮助1213。图纸 尊敬的ymg3先生,我从你那里得到的lisp很好,但在这里,如果我必须更改偏移量,那么我必须更改例程,我必须用新的偏移距离修改它,我可以在excel或任何表格格式中获得结果,其中数据将用链测长度、左偏移坐标、中心线坐标、然后右侧坐标作为首行分隔。
页:
1
[2]