明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2259|回复: 11

偏移到当前层,怎么才能偏移0求插件源码

[复制链接]
发表于 2016-5-4 22:16 来自手机 | 显示全部楼层 |阅读模式
偏移并将新对象改变到当前层 (defun c:of (/ of1 of2 va1 en2 pt1) (princ) (setvar "cmdecho" 0)(command "undo" "be") (princ "偏移并将新对象改变到当前层") (setq cm (princ (strcat "\n" (getvar "clayer")))) ;确定偏移距离 (setq of1 (getvar "offsetdist")) (setq of2 (strcat "\n偏移距离 <"(rtos of1 2)">: ")) (setq va1 (getstring of2)) ; (setq en2 (entsel "\n选择偏移对象:")) (setq pt1 (getpoint "\n选择偏移方向:")) (while (/= pt1 nil) (command "offset" va1 en2 pt1 "") (setq dz (entlast)) (command "change" dz "" "P" "LA" cm "") (setq en2 (entsel "\nSelect object to offset:")) (setq pt1 (getpoint "\nSide to offset:")) ) (princ)(setvar "cmdecho" 1)(command "undo" "e"))
发表于 2020-5-31 21:45 | 显示全部楼层
xiaolong1487 发表于 2016-5-7 18:57
是我太粗心了,随便写的,现在重新写了个!再试试

这个可以,带记忆,可连续,好用
发表于 2016-5-5 04:53 | 显示全部楼层
用复制也可以
发表于 2016-5-5 05:03 | 显示全部楼层
本帖最后由 xiaolong1487 于 2016-5-5 05:15 编辑
  1. (defun c:ts (/ en obj)
  2.         (while (setq en (car (entsel)))
  3.                 (setq obj (vlax-ename->vla-object en))
  4.                 (vla-Offset obj 0)
  5.                 (vla-put-Layer (vlax-ename->vla-object (entlast)) (getvar "CLAYER"))
  6.         )
  7. )
发表于 2016-5-5 08:01 | 显示全部楼层
xiaolong1487 发表于 2016-5-5 05:03

指令: (vla-Offset obj 0)
; 错误: 自动化错误。无效的引数 Distance (于 Offset method 中)
发表于 2016-5-5 08:13 | 显示全部楼层
可能得用复制了!!!!
发表于 2016-5-5 20:50 | 显示全部楼层
yoyoho 发表于 2016-5-5 08:01
指令: (vla-Offset obj 0)
; 错误: 自动化错误。无效的引数 Distance (于 Offset method 中)

我这边测试没有问题
 楼主| 发表于 2016-5-6 00:29 来自手机 | 显示全部楼层
复制可以!偏移不可以偏移距离为0吗?
 楼主| 发表于 2016-5-6 09:25 | 显示全部楼层
xiaolong1487 发表于 2016-5-5 05:03

这个可以,可不可以,同样可以偏移别的距离啊。麻烦高手。
 楼主| 发表于 2016-5-6 13:09 | 显示全部楼层
xiaolong1487 发表于 2016-5-5 20:50
我这边测试没有问题

如果是矩形,就会出现。
发表于 2016-5-7 18:57 | 显示全部楼层
本帖最后由 xiaolong1487 于 2016-5-7 19:02 编辑
爱de臂膀 发表于 2016-5-6 13:09
如果是矩形,就会出现。

是我太粗心了,随便写的,现在重新写了个!再试试
  1. (defun c:ts (/ *error* en new_dist os p0)
  2.         (defun *error* (msg)
  3.                 (princ mag)
  4.                 (setvar "cmdecho" 1)
  5.                 (setvar "osmode" os)
  6.                 (princ)
  7.         )
  8.         (setq os (getvar "osmode"))
  9.         (mapcar 'setvar '("cmdecho" "osmode") '(0 0))
  10.         (setq old_dist (if (setq new_dist (getreal (strcat "\n偏移距离[" (if old_dist (rtos old_dist 2 3) "0") "]")))
  11.                                                                          new_dist
  12.                                                                          (if old_dist old_dist (setq old_dist 0))
  13.                                                                  )   
  14.   )
  15.         (while (and (setq en (car (entsel))) (setq p0 (getpoint "\n偏移方向:")))
  16.                 (if (= old_dist 0)
  17.                         (command "copy" en "" p0 p0)
  18.                         (command "offset" old_dist en p0 "")
  19.                 )
  20.                 (vla-put-Layer (vlax-ename->vla-object (entlast)) (getvar "CLAYER"))
  21.         )
  22.         (setvar "cmdecho" 1)
  23.         (setvar "osmode" os)
  24.         (princ)
  25. )
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-19 19:32 , Processed in 0.358001 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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