改线型比例的lsp程序(已解决)
本帖最后由 669423907 于 2011-8-13 17:08 编辑;动态修改线型比例(zhynt)2011-6-23 02:07
(defun c:ad(/ ss alts pt gr s1 lt newscale)
;(prompt "\n请选择非Contiiuous线型: ")
(setq ss (ssget) alts (getvar "LTSCALE") pt (getpoint "\n请指定一个点: "))
(while (= (car (setq gr (grread nil 5 0))) 5)
(redraw)(grdraw (cadr gr) pt 1 1)(setq i -1)
(while (setq s1 (ssname ss (setq i (1+ i))))
(if (setq lt (cdr (assoc 6 (entget s1))))(progn
(setq zq (cdr (assoc 40 (tblsearch "ltype" lt))))
(if (/= zq 0)
(setq newscale (/ (distance (cadr gr) pt) zq alts 1.))
(setq newscale 1)))
(progn (setq zq (cdr (assoc 40 (tblsearch "ltype"
(cdr (assoc 6
(tblsearch "layer" (cdr (assoc 8 (entget s1))))))))))
(if (/= zq 0)(setq newscale (/ (distance (cadr gr) pt) zq alts 1.))
(setq newscale 1))))
(vla-put-LinetypeScale (vlax-ename->vla-object s1) newscale)))
(redraw)(princ))
回复 zhongys 的帖子
谢谢你的热心帮助。
一般用于单个对象的修改。
你的程序好像还不能连续修改吖。 感谢您的分享,终于不需要一个一个的点了 各种线型可以设置各自的比例吗? 直接用属性修改不行么? 属性修改不好用,当第一次修改不合适时,想要再次修改,又要点哪个框框,,,,,, CAD下有个 ltscale 的命令,用这个可以修改线型比例,无法达到你的要求吗 最好一次能改所有的一类比例,如虚线,把比例扩大或缩小一倍! 回复 669423907 的帖子
我的意思是该单个对象的,ltscale 就全改了! (defun c:tt()
(princ "\n输入线型比例)
(COMMAND "CHPROP" (SSGET) "" "S" PAUSE "")
) 回复 zhongys 的帖子
首先感谢你的帮助,不知什么原因,程序没反应!! 先把程式加载入才可以 能不能先提示当前线型比例,在提示用户输入呢?这样就很方便了。