请求可以快速生成代表弧面的线
类似图片这样,点选或框选两条线段,在之间生成代表弧面的线段,最好是动态的,鼠标往左就左边密,越往左就越密;鼠标往右就右边密,越往右就越密。要求很高,回报太少
用元宝写了一个,基本能满足我的需求了
(defun c:HHMX_YY (/ p1 p2 minX maxX minY maxY width centerX startX steps i stepSize xPos lineEnt
numLines temp rectEnt previousStep)
;; 设置绘图环境
(setvar "CMDECHO" 0)
(setvar "CECOLOR" "8")
(setq p1 (getpoint "\n指定矩形第一角点: "))
(setq p2 (getcorner p1 "\n指定矩形第二角点: "))
(if (> (car p2) (car p1))
(setq temp p1
p1 p2
p2 temp
)
)
(setq minX (car p1))
(setq maxX (car p2))
(setq minY (min (cadr p1) (cadr p2)))
(setq maxY (max (cadr p1) (cadr p2)))
(setq width (- maxX minX))
(command "_.RECTANGLE" "_none" p1 "_none" p2)
(setq rectEnt (entlast))
(initget "8")
(setq numLines (getint "\n请输入竖线数量 <8>: "))
(if (null numLines) (setq numLines 8))
(if (<= numLines 0)
(progn
(alert "错误:竖线数量必须大于0!")
(command "_.ERASE" rectEnt "")
(exit)
)
)
(setq startX maxX)
(if (>= numLines 1)
(progn
(setq xPos (- maxX (/ width 2.0)))
(command "_.LINE"
(list xPos minY)
(list xPos maxY)
""
)
(setq previousStep (/ width 2.0))
)
)
(setq i 1)
(repeat (max 0 (- numLines 1))
(setq stepSize (/ previousStep 2.0))
(setq xPos (- xPos stepSize))
(command "_.LINE"
(list xPos minY)
(list xPos maxY)
""
)
(setq previousStep stepSize)
(setq i (1+ i))
)
(command "_.ERASE" rectEnt "")
;; 恢复环境设置
(setvar "CECOLOR" "bylayer")
(setvar "CMDECHO" 1)
(princ (strcat "\n成功创建" (itoa numLines) "条竖线,最后步长为: "
(rtos previousStep 2 4)))
(princ)
) 这样的效果
qazxswk 发表于 2024-9-29 00:15
可以发这个插件吗:handshake qazxswk 发表于 2024-9-29 00:15
可以发我一份这个插件吗
页:
[1]