明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
12
返回列表 发新帖
楼主: jeepsheep

[求LISP]求COPY和OFFSET新物体使之到当前层!

  [复制链接]
发表于 2004-12-17 16:27 | 显示全部楼层
meflying老师,我试过,Copy的话,若选择多个实体进行copy。只会把多个实体中的最后一个变成当前层的,若让多个实体一起变成当前层,应该用什么方法呀?
发表于 2004-12-22 14:27 | 显示全部楼层
在网路上找到的试试看 (defun C:` (/ SS FLS ENT CL) ;复制层(`在esc键下方)
(vl-load-com)
(command "_.ucs" "") (prompt "\Copy * Layer")
(setq SS (ssget))
(setq FLS (LAYERR))
(setq CL (getvar "clayer"))
(foreach ENT FLS
(setq ENT (vl-princ-to-string ENT))
(if (not (tblsearch "layer" ENT))
(command "layer" "m" ENT "")
)
(command "copy" SS "" "0,0" "0,0")
(command "change" SS "" "P" "la" ENT "")
)
(command "_.ucs" "p")
(setvar "clayer" CL)
(prin1)
)
(defun LAYERR (/ AJS FLS WORD LST1 N)
(setq AJS (getstring "\n输入层名/(选择图层) :")
LST1 ""
N 1
)
(if (= AJS "")
(setq FLS (list (cdr (assoc 8 (entget (car (entsel)))))))
(progn
(repeat (strlen AJS)
(setq WORD (substr AJS N 1))
(if (not (equal "," WORD))
(setq LST1 (strcat LST1 WORD))
(progn
(setq FLS (append FLS (list LST1))
LST1 ""
)
)
)
(setq N (1+ N))
)
(if (not (equal LST1 ""))
(setq FLS (append FLS (list LST1)))
FLS
)
)
)
)
 楼主| 发表于 2004-12-26 23:38 | 显示全部楼层
能否不输图层名吗?哪能记得这么多!直接变成当前层多好,要不就做成对话框选图层!
发表于 2005-3-3 20:22 | 显示全部楼层
我也来凑下热闹!!! 我用最简间的办法做. (DEFUN C:CU() (setq pp (ssget))
(setq LAY (getvar "CLAYER"))
(COMMAND "COPY" pp "" "0,0" "0,0")
(COMMAND "CHPROP" "P" "" "LA" lay "LT" "bylayer" "C" "bylayer" "")(princ))
(DEFUN C:OC() (vl-cmdf "_.undo" "_group")
(mapcar 'princ (list "Current offset dist= " (getvar "OFFSETDIST")" "))
(setq di (getstring "\nEnter Offset Dist:"))
(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))
发表于 2005-3-23 23:56 | 显示全部楼层
andyding发表于2005-3-3 20:22:00我也来凑下热闹!!! 我用最简间的办法做. (DEFUN C:CU() (setq pp (ssget)) (setq LAY (getvar \"CLAYER\")) (COMMAND \"C...

这两个程序好用,好好用,非常感谢
发表于 2005-4-1 12:42 | 显示全部楼层
偏移到当前层命令: (defun C:CLoffset (/ d dt e cl p cm nt)
(setierr)
(setq d (getvar "offsetdist")
cl (getvar "clayer")
)
(if (> d 0) (setq ds (rtos d 2) dt nil)
(setq ds "Through" dt t)
)
(initget 7 "Through ")
(setq d1 (getdist (strcat "\nOffset distance" "<" ds "> :")))
(if (= d1 "Through") (setq dt t)
(if (= d1 "") (if dt () (setq d1 d)) (setq dt nil))
)
(initget 7 " ")
(setq e (entsel "\nSelect object to offset :"))
(while (not e)
(initget 7 " ")
(setq e (entsel "\nSelect object to offset :"))
)
(if (= e "")
(abcdefg)
(redraw (car e) 3)
)
(setq p (getpoint "\nSide to offset?"))
(if dt (command ".offset" "T" e p "") (command ".offset" d1 e p ""))
(redraw (car e) 4)
(command "_change" (entlast) "" "p" "La" cl "c" "Bylayer" "lt" "bylayer" "")
(setq nt t)
(while nt
(initget 7 " ")
(setq e (entsel "\nSelect object to offset :"))
(while (not e)
(initget 7 " ")
(setq e (entsel "\nSelect object to offset :"))
)
(if (= e "") (setq nt nil)
(progn
(redraw (car e) 3)
(setq p (getpoint "\nSide to offset?"))
(if dt (command ".offset" "T" e p "") (command ".offset" d1 e p ""))
(command "_change" (entlast) "" "p" "La" cl "c" "Bylayer" "lt" "bylayer" "")
(redraw (car e) 4)
)
)
)


(reerr)
(princ)
)
发表于 2005-4-1 12:43 | 显示全部楼层
(defun C:CLoffset (/ d dt e cl p cm nt)
(setierr)
(setq d (getvar "offsetdist")
cl (getvar "clayer")
)
(if (> d 0) (setq ds (rtos d 2) dt nil)
(setq ds "Through" dt t)
)
(initget 7 "Through ")
(setq d1 (getdist (strcat "\nOffset distance" "<" ds "> :")))
(if (= d1 "Through") (setq dt t)
(if (= d1 "") (if dt () (setq d1 d)) (setq dt nil))
)
(initget 7 " ")
(setq e (entsel "\nSelect object to offset :"))
(while (not e)
(initget 7 " ")
(setq e (entsel "\nSelect object to offset :"))
)
(if (= e "")
(abcdefg)
(redraw (car e) 3)
)
(setq p (getpoint "\nSide to offset?"))
(if dt (command ".offset" "T" e p "") (command ".offset" d1 e p ""))
(redraw (car e) 4)
(command "_change" (entlast) "" "p" "La" cl "c" "Bylayer" "lt" "bylayer" "")
(setq nt t)
(while nt
(initget 7 " ")
(setq e (entsel "\nSelect object to offset :"))
(while (not e)
(initget 7 " ")
(setq e (entsel "\nSelect object to offset :"))
)
(if (= e "") (setq nt nil)
(progn
(redraw (car e) 3)
(setq p (getpoint "\nSide to offset?"))
(if dt (command ".offset" "T" e p "") (command ".offset" d1 e p ""))
(command "_change" (entlast) "" "p" "La" cl "c" "Bylayer" "lt" "bylayer" "")
(redraw (car e) 4)
)
)
)


(reerr)
(princ)
)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-4 11:12 , Processed in 0.238014 second(s), 16 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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