明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1067|回复: 10

[提问] 网上找的源码觉得好用,希望有大神在这基础上加个可以批量偏移,感激不尽啊,本人小白

[复制链接]
发表于 2019-11-23 09:50 | 显示全部楼层 |阅读模式
(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))

发表于 2019-11-26 15:13 来自手机 | 显示全部楼层
你不会框选对象吗
回复 支持 0 反对 1

使用道具 举报

 楼主| 发表于 2019-11-23 14:17 | 显示全部楼层
没人,自己顶顶
发表于 2019-11-25 11:26 | 显示全部楼层
这个程序好像是选择一个对象偏移并将新生成的对象放到当前层.



;|
说明:偏移对象并将偏移后的对象设置为当前图层.
可选择是否批量偏移,如果不需要选择,可以注释掉        (setq mor (getstring "\n空格为单个偏移,其他任意字符为多个偏移:")) 行
批量偏移时按空格结束偏移.
偏移后统一修改对象图层
|;

(defun c:OC ( / oldOSMODE di_key di o mor po lay  ss_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)
 楼主| 发表于 2019-11-26 14:32 | 显示全部楼层
wyl219 发表于 2019-11-25 11:26
这个程序好像是选择一个对象偏移并将新生成的对象放到当前层.

谢谢大神啊 ,我要不是这样的,我要那种可以窗选很多图形,然后一次性偏移,不要这种连续的
 楼主| 发表于 2019-11-26 14:34 | 显示全部楼层
wyl219 发表于 2019-11-25 11:26
这个程序好像是选择一个对象偏移并将新生成的对象放到当前层.

有时候图形要改间隙,一个个改特麻烦
 楼主| 发表于 2019-11-26 14:41 | 显示全部楼层
wyl219 发表于 2019-11-25 11:26
这个程序好像是选择一个对象偏移并将新生成的对象放到当前层.

能帮改改吗,改成窗选多个图形偏移
发表于 2019-11-26 15:13 来自手机 | 显示全部楼层
这个就可以窗选多个图形
发表于 2019-11-26 17:24 | 显示全部楼层
edm520 发表于 2019-11-26 14:41
能帮改改吗,改成窗选多个图形偏移

本来也原程序也没实现框选偏移,因为用offset命令本来也不能操作选择集
多个对象偏移只通过一个点来判断,你确定不会出问题么.
如果是统一方向偏移,用copy不好么....
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-5-17 13:06 , Processed in 0.280870 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表