明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 6198|回复: 27

[源码] 双向偏移程序

[复制链接]
发表于 2016-6-26 15:44 | 显示全部楼层 |阅读模式
(defun c:ooo (/ getds obj)
(vl-load-com)(initget 2)
(setq getds (getdist "\n输入偏移距离<可直接量取>:"))
(if (ssget '((0 . "Arc,Circle,Ellipse,*Line")))
   (vlax-for obj (vla-get-activeselectionset
            (vla-get-activedocument (vlax-get-acad-object)))
     (vla-offset obj getds)(vla-offset obj (* getds -1))
     )(vlax-release-object obj)
  )
    )
发表于 2023-8-23 10:10 | 显示全部楼层
流动的清泉 发表于 2017-11-14 10:28
有没有人 试过,在用到射线的时候,程序就不能正常运行了。

选择集没有选中射线,要改。
射线是ray,在(0 . "Arc,Circle,Ellipse,*Line")中加入"ray"。
发表于 2020-6-30 17:07 | 显示全部楼层
maiko 发表于 2016-6-29 00:52
;;;来个vla简单的

请问一下空格不删除,左键删除这个怎么改一下啊
发表于 2023-8-22 18:37 | 显示全部楼层

这个太赞了,给力,很好用,谢谢~是我想要的
 楼主| 发表于 2016-6-26 15:57 | 显示全部楼层
这个程序在选取目标后,要鼠标右键或敲多一次空格之后才能执行偏移动作,各位老大可可以帮我简化一下?点选目标之后自动偏移

令外,想在偏移完成后,加多个删除或不删除源目标的动作。偏移完成后,敲多一次空格即为删除,不敲多一次空格即为不删除
发表于 2016-6-26 17:13 来自手机 | 显示全部楼层
加initget.        
 楼主| 发表于 2016-6-26 18:11 | 显示全部楼层
自贡黄明儒 发表于 2016-6-26 17:13
加initget.

你好,可以帮我大致改改么?我完全不懂
发表于 2016-6-26 22:23 | 显示全部楼层
本帖最后由 tryhi 于 2016-6-26 22:27 编辑

绝对不要拿完全不懂当理由,你不懂也不学,帮你的话等于纵容你向别人伸手,以后你习惯了伸手,对大家都没好处,好像你刚注册不久,还有发展空间,希望自己学习
  1. (defun c:ooo (/ allname getds i n obj ojb ss)
  2.         (vl-load-com)(initget 2)
  3.         (setq getds (getdist "\n输入偏移距离<可直接量取>:"))
  4.         (while
  5.                 (setq ss(ssget ":s" '((0 . "Arc,Circle,Ellipse,*Line"))))
  6.                 (setq
  7.                         allname (try-ss2EnList ss)
  8.                         ojb (mapcar '(lambda(x)(vlax-ename->vla-object x ))allname)
  9.                         i -1
  10.                 )
  11.                 (repeat (sslength ss)
  12.                         (setq i(1+ i)
  13.                                 n (vlax-ename->vla-object(ssname ss i))
  14.                         )
  15.                         (vla-Offset n getds)(vla-Offset n (- getds))
  16.                 )
  17.         )
  18. )
 楼主| 发表于 2016-6-26 23:57 | 显示全部楼层
tryhi 发表于 2016-6-26 22:23
绝对不要拿完全不懂当理由,你不懂也不学,帮你的话等于纵容你向别人伸手,以后你习惯了伸手,对大家都没好 ...

说的很对,恳切。

在下目前只能以人家程序为蓝本,,对比拼凑一下,,如此而已,,楼上黄哥说到的,,函数特性的东西,确实完全不懂,,摸索中。。

tryhi 给的程序可否顺手完善一下,工作中面临大量此类重复动作,,,
cAD报程序错误: no function definition: TRY-SS2ENLIST
发表于 2016-6-27 09:08 | 显示全部楼层
  1. (defun c:ooo (/ getds obj)
  2.   (vl-load-com)
  3.   (setvar 'cmdecho 0)
  4.   (initget 2)
  5.   (setq getds (getdist "\n输入偏移距离<可直接量取>:"))
  6.   (if (ssget ":s" '((0 . "Arc,Circle,Ellipse,*Line")))
  7.     (vlax-for obj (vla-get-activeselectionset
  8.         (vla-get-activedocument (vlax-get-acad-object))
  9.       )
  10.       (vla-offset obj getds)
  11.       (vla-offset obj (* getds -1))
  12.     )
  13.     (vlax-release-object obj)
  14.   )
  15.   (if (not (getpoint "\n按鼠标左键不删除源对象 <空格删除>"))
  16.     (command "_.ERASE" (ssget "p") "")
  17.     )
  18.   (princ)
  19. )

 楼主| 发表于 2016-6-27 11:22 | 显示全部楼层
琴剑江山_10184 发表于 2016-6-27 09:08

谢谢琴剑江山,程序比我想要的还要完美。

同时,还想麻烦你帮我看看楼下同类程序。删改过,想只留下其 双向偏移功能,失败了。该选项的“输入部分”和“offsec动作”似乎放在其他选项里面,,,
发表于 2016-6-27 11:25 | 显示全部楼层
皇上快溜 发表于 2016-6-27 11:22
谢谢琴剑江山,程序比我想要的还要完美。

同时,还想麻烦你帮我看看楼下同类程序。删改过,想只留下其 ...

楼下的程序,人家用了  自己的函数,你问他要自定函数
 楼主| 发表于 2016-6-27 11:31 | 显示全部楼层
琴剑江山_10184 发表于 2016-6-27 11:25
楼下的程序,人家用了  自己的函数,你问他要自定函数

谢谢琴剑江山。代码长了点,尝试了几次,贴不上了。也不好频频麻烦你。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-19 21:11 , Processed in 1.234947 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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