网上找的源码觉得好用,希望有大神在这基础上加个可以批量偏移,感激不尽啊,本人小白
(DEFUN C:OC() (vl-cmdf "_.undo" "_group")(mapcar 'princ (list "Current offset dist= " (getvar "OFFSETDIST")" "))
(setq di (getstring "\输入偏移距离:"))
(setq o (ssget))
(setq po (getpoint "\nSide to offset"))
(setq LAY (getvar "CLAYER"))
(if (/= di nil)
(COMMAND "OFFSET" di o po "")
(COMMAND "CHPROP" "L" "" "LA" lay "LT" "bylayer" "C" "bylayer" ""))
(if (= di nil)
(COMMAND "OFFSET" "" o po "")
(COMMAND "CHPROP" "L" "" "LA" lay "LT" "bylayer" "C" "bylayer" ""))
(vl-cmdf "_.undo" "_end")(princ))
你不会框选对象吗 没人,自己顶顶:'( 这个程序好像是选择一个对象偏移并将新生成的对象放到当前层.
;|
说明:偏移对象并将偏移后的对象设置为当前图层.
可选择是否批量偏移,如果不需要选择,可以注释掉 (setq mor (getstring "\n空格为单个偏移,其他任意字符为多个偏移:")) 行
批量偏移时按空格结束偏移.
偏移后统一修改对象图层
|;
(defun c:OC ( / oldOSMODE di_key di o mor po layss_tmp )
(vl-load-com)
(setvar "cmdecho" 0)
(command "_undo" "be")
(setq oldOSMODE (getvar "OSMODE"))
;start部分结束
(initget "a")
(setq di_key (getreal (strcat "\n输入偏移距离,输入a为" (vl-princ-to-string (setq di (getvar "OFFSETDIST"))) ",空格为点选位置:")))
(cond ((not di_key);输入空格
(setq di ""))
((equal "a" di_key);输入为a,不修改di
)
(t ;如果输入了偏移距离,则将di的值设为其值
(setq di di_key)
)
)
(setq o (car (entsel "\n选择需要偏移的对象")));由于offset不适用于选择集,修改为entsel
(setq mor (getstring "\n空格为单个偏移,其他任意字符为多个偏移:"))
(setq po (getpoint "\n选择偏移的点"))
(setq LAY (getvar "CLAYER"))
(setq ss_tmp (ssadd))
(if (/= "" mor)
(progn
(COMMAND "OFFSET" di o po "")
(while (setq po (getpoint "\n选择下一个偏移的点"))
(ssadd (entlast) ss_tmp)
(COMMAND "OFFSET" di (setq o (entlast)) po "")
)
)
(COMMAND "OFFSET" di o po "")
)
(ssadd (entlast) ss_tmp)
(COMMAND "CHPROP" ss_tmp "" "LA" lay "LT" "bylayer" "C" "bylayer" "")
;end部分开始
(setvar "OSMODE" oldOSMODE)
(command "_undo" "e")
(setvar "cmdecho" 1)
)
(princ)
wyl219 发表于 2019-11-25 11:26
这个程序好像是选择一个对象偏移并将新生成的对象放到当前层.
谢谢大神啊 ,我要不是这样的,我要那种可以窗选很多图形,然后一次性偏移,不要这种连续的 wyl219 发表于 2019-11-25 11:26
这个程序好像是选择一个对象偏移并将新生成的对象放到当前层.
有时候图形要改间隙,一个个改特麻烦 wyl219 发表于 2019-11-25 11:26
这个程序好像是选择一个对象偏移并将新生成的对象放到当前层.
能帮改改吗,改成窗选多个图形偏移:loveliness: 这个就可以窗选多个图形 edm520 发表于 2019-11-26 14:41
能帮改改吗,改成窗选多个图形偏移
本来也原程序也没实现框选偏移,因为用offset命令本来也不能操作选择集
多个对象偏移只通过一个点来判断,你确定不会出问题么.
如果是统一方向偏移,用copy不好么....
页:
[1]
2