- A+
在cad里面看到有的插件上有虚线自动比例,那怎么通过lsp实现了,起始也没有想象的那么复杂,首先需要知道线的长度,在根据长度选择合适的比例即可。没有想象的那么神奇,一下就自动了,代码实现也是一步一步来的。
比如,长度 大于于10选择的比例是5,长度大于100选择的比例是50,.。。
知道这个思路还不能造出代码来吗?系统自动命令 change,可以调节线型,比例等参数。
下面上一段单选调整比例代码;没过滤线型,没循环执行。如需批量,请自己动手循环即可
(defun c:t6 (/ bili hjbk)
(setq sfd (ssget))
(setq Q1(ssname sfd 0));取到选集中的第一个图源
;长度
(command "_lengthen" Q1 "")
(setq cdle (getvar "PERIMETER"))
;(setq hjbk (vlax-ename->vla-object Q1))
;(setq cdle (vlax-curve-getdistatparam hjbk (vlax-curve-getendparam hjbk) ) )
(princ cdle)
;根据长度选择合适的比例
(cond
((<= cdle 20)(setq bili(/ cdle 1)))
((<= cdle 60)(setq bili(/ cdle 1.5)))
( (<= cdle 90)(setq bili(/ cdle 2)))
( (<= cdle 150)(setq bili(/ cdle 3)))
( (<= cdle 200)(setq bili(/ cdle 20)))
( (<= cdle 300)(setq bili(/ cdle 24)))
( (<= cdle 350)(setq bili(/ cdle 27)))
( (<= cdle 450)(setq bili(/ cdle 32)))
( (<= cdle 550)(setq bili(/ cdle 38)))
( (<= cdle 650)(setq bili(/ cdle 42)))
( (<= cdle 780)(setq bili(/ cdle 50)))
( (<= cdle 920)(setq bili(/ cdle 55)))
( (<= cdle 1300)(setq bili(/ cdle 60)))
( (<= cdle 1600)(setq bili(/ cdle 64)))
( (<= cdle 2000)(setq bili(/ cdle 75)))
( (<= cdle 2500)(setq bili(/ cdle 85)))
((<= cdle 3000)(setq bili(/ cdle 95)))
( (<= cdle 3500)(setq bili(/ cdle 100)))
( (<= cdle 5500)(setq bili(/ cdle 120)))
( (<= cdle 7500)(setq bili(/ cdle 140)))
( (<= cdle 9500)(setq bili(/ cdle 160)))
( (<= cdle 15000)(setq bili(/ cdle 180)))
)
(cond
((<= cdle 10)(setq bili 5))
((<= cdle 50)(setq bili(* bili 1)))
((<= cdle 100)(setq bili(* bili 1.3)))
((<= cdle 150)(setq bili(* bili 2)))
((<= cdle 350)(setq bili(* bili 5)))
((<= cdle 550) (setq bili(* bili 8)))
( (<= cdle 800) (setq bili(* bili 10)))
((<= cdle 1200)(setq bili(* bili 15)))
((<= cdle 5000)(setq bili(* bili 25)))
((<= cdle 10000)(setq bili(* bili 50)))
)
(princ bili)
(command "change" Q1 "" "p" "s" bili "");调整比例
)
复制