【源码】比例可变的轨迹/路径阵列
本帖最后由 荒野孤行 于 2015-7-24 23:12 编辑可以选择沿着曲线轨迹/路径不旋转/旋转阵列,同时阵列对象的比例也可以变化(但是需要将阵列的对象组成块),演示请见图示:
;;;******路径阵列 程序开始******
(defun c:t1 ()
(setvar "osmode" 15359)
(setvar "cmdecho" 0)
(command "undo" "be")
(princ "\n★功能:沿曲线路径阵列.\n")
(while
(progn (setq EntBlock (entsel
"\n选择要阵列的块(请确保图块的基点已设定于其中心位置):"
)
BlockEntname (car EntBlock)
)
(not (if (= EntBlock nil)
nil
(= (cdr (assoc 0 (entget BlockEntname))) "INSERT")
)
)
)
(princ
"\n提示:选取的不是图块或未选取任何图元,请重新选取:"
)
)
(setq BlockName (cdr (assoc 2 (entget (car EntBlock)))))
(while
(progn
(setq EntCurve
(entsel
"\n请选择路径曲线(多段线、直线、样条曲线、圆、圆弧或椭圆):\n"
)
)
(not
(if (= EntCurve nil)
nil
(wcmatch (cdr (assoc 0 (entget (car EntCurve))))
"LWPOLYLINE,LINE,SPLINE,ARC,CIRCLE,ELLIPSE"
)
)
)
)
)
(initget 6)
(if (not (setq num (getint "\n阵列总数量:<10>")))
(setq num 10)
)
(initget "Y N")
(if (not
(setq kw (getkword "阵列同时旋转对象:[是(Y) / 否(N)]<Y>"))
)
(setq kw "Y")
)
(initget "A B")
(if
(not (setq gongshi
(getkword
"\n选择计算图块比例变化的公式:[Sin(x)+1.2(A)/Cos(x)+1.2(B)]<A>: "
)
)
)
(setq gongshi "A")
)
**** Hidden Message *****
(setq i (+ i 1))
)
(command "undo" "e")
(setvar "osmode" 15359)
(princ)
)
;;;;;;*******路径阵列 程序结束******
本帖最后由 cjjh8301 于 2020-6-27 19:27 编辑
感谢楼主的源码
但是,为什么块阵列时,到了某个角度,就翻转过来了,能解决这个问题吗(块基点为短边中点)
荒野孤行 发表于 2013-9-9 19:30
主要运用VLX-Curve-函数
图块的间距要是可以逐渐变化就完美了。
如果可以改成按照固定长度或等分长度就好了 感谢分享!~ 正好需要,支持下
谢谢楼主!!
正好需要,支持下 实用的程序!!! 可以选择对象的两点在曲线上阵列吗? 看不到东西