正在查找PLINE的LISP
我想我以前见过它,但基本上它是一个LISP,为柱脚线上的单线平面视图创建斜接90°和45°(嗯,任何角度都可以)管道符号。图中附有一个示例,当您绘制PLINE时,它会在每个角度梯段(以黄色突出显示)沿梯段放置相应的符号。有人知道我在哪里能找到它吗?再次感谢任何能伸出援助之手的人。这是一个快速而肮脏的简单lisp
希望它能让你开始
来吧,我可不想偷懒
(defun C:demo(/ ang1 ang2 points elist endang tick p1 p1r p1u p2 p2r p2u
p3 p4 pline pmid pt1 pt2 startang)
(setvar 'osmode 0)
(setvar 'cecolor "blue")
(setvar 'plinewid 0)
(command "._pline")
(while (= 1 (logand 1 (getvar 'cmdactive)))
(command pause))
(setq pline(entlast)
points (vl-remove-if
(function not)
(mapcar
(function (lambda (x)
(if (= 10 (car x))
(cdr x))))
(setq elist (entget pline))
)
)
tick 25.4 ;<-- ticks length
)
(setq startang (angle (car points) (cadr points))
endang (angle (nth (- (length points) 2) points) (last points))
)
(setq p1 (polar (car points) (+ startang (/ pi 2)) (/ tick 2))
pmid (mapcar (function (lambda (a b) (/ (+ a b) 2)))
(car points)
p1)
p2 (polar pmid (+ startang pi) (/ tick )
p4 (polar (car points) (- startang (/ pi 2)) (/ tick 2))
pmid (mapcar (function (lambda (a b) (/ (+ a b) 2)))
(car points)
p4)
p3 (polar pmid startang (/ tick )
)
(setvar 'cecolor "cyan")
(command "_spline" p1 p2 p3 p4 "" p1 p4 "")
(setq p1 (polar (last points) (+ endang (/ pi 2)) (/ tick 2))
pmid (mapcar (function (lambda (a b) (/ (+ a b) 2)))
(last points)
p1)
p2 (polar pmid (+ endang pi) (/ tick )
p4 (polar (last points) (- endang (/ pi 2)) (/ tick 2))
pmid (mapcar (function (lambda (a b) (/ (+ a b) 2)))
(last points)
p4)
p3 (polar pmid endang (/ tick )
)
(command "_spline" p1 p2 p3 p4 "" p1 p4 "")
(setvar 'cecolor "yellow")
(while (> (length points) 2)
(setq ang1 (+ (angle (car points) (cadr points)) pi)
ang2 (angle (cadr points) (caddr points))
pt1(polar (cadr points) ang1 tick)
p1u(polar pt1 (+ ang1 (/ pi 2)) (/ tick 2))
p1r(polar pt1 (- ang1 (/ pi 2)) (/ tick 2))
pt2(polar (cadr points) ang2 tick)
p2u(polar pt2 (+ ang2 (/ pi 2)) (/ tick 2))
p2r(polar pt2 (- ang2 (/ pi 2)) (/ tick 2))
)
(setvar 'plinewid (/ tick )
(command "._pline" "_non" p1u "_non" p1r "")
(command "._pline" "_non" p2u "_non" p2r "")
(setq points (cdr points))
)
(princ)
)
~'J'~ 嗯,这也许行得通。我下载了它,并已经做了一些调整,它的工作正是我需要的。。。我只需要存储OSMODE并在命令结束时恢复它,然后在其中获取一个错误处理程序。我要到星期一回去工作才碰剩下的。
实际上,让我来做这个,完成后我会发布我完成的代码修订。这对我来说是一个很好的学习机会。。。。谢谢你的帮助。我想我可以接受这个并完成它。这对我来说也是很棒的学习。我星期一回来
我很高兴看到你们的最终产品
干杯
~'J'~ 嗯,我可以做一些“代码伪装”,但我绝对不是程序员。我做过的最好的Lisp程序程序是大约6行,哈哈。无论如何,我要出城度周末,我相信当我周一回来的时候,我会有一些问题。。。。再次感谢。
好的,让我知道你需要改变什么-
我会完全做到的
~'J'~
抱歉报告,这是我得到的。。。。
命令:演示
._普林线
指定起点:
当前线宽为0.0000
指定下一点或[弧/半宽/长度/撤消/宽度]:
指定下一点或[弧/闭合/半宽/长度/撤消/宽度]:
指定下一点或[弧/闭合/半宽/长度/撤消/宽度]:
命令:;错误:错误的参数类型:2D/3D点:nil
蓝线,没别的
谢谢你的测试
对不起,我现在不能换
以后再做
~'J'~
尝试编辑的版本
~'J'~
管LSP
对不起,还是有点不对劲。。。又是蓝线了
命令:管道
._普林线
指定起点:
当前线宽为0.0000
指定下一点或[弧/半宽/长度/撤消/宽度]:
指定下一点或[弧/闭合/半宽/长度/撤消/宽度]:
指定下一点或[弧/闭合/半宽/长度/撤消/宽度]:
指定下一点或[弧/闭合/半宽/长度/撤消/宽度]:
命令:错误的参数类型:2D/3D点:nil_撤消当前设置:自动=打开,
控制=全部,联合收割机=是
输入要撤消的操作数或[自动/控制/开始/结束/标记/返回]
:_E
命令:
页:
[1]
2