love1030312 发表于 2014-6-11 22:34:57

图层问题

这是一个偏移的程序
   在什么地方加入什么代码能偏移到当前图层


谢谢谢谢

lostbalance 发表于 2014-6-11 23:28:02

lz的程序里,好像是调用的autocad里的offset命令实现的偏移。印象中,高版本的autocad的offset命令支持图层便宜功能,简单点就是按照cad的offset中的图层控制,把相关关键词加入到代码command offset中。
另外也可以用entlast还有repeat命令把偏移产生的新图元依次用entmod改图层。

77077 发表于 2014-6-12 00:26:53

;双向偏移,并将偏移后的对象放置到相应图层
(if (ssget '((0 . "Arc,Circle,Ellipse,*Line")))
      (vlax-for obj
                  (vla-get-activeselectionset (vla-get-activedocument (vlax-get-acad-object)))
               (ptlay (vla-offset obj D1) LAYER1)
                  (ptlay (vla-offset obj (* D1 -1)) LAYER1)
                   )
                  (vlax-release-object obj)
)

;-------------------------------------------
(defun ptlay (x y)(vla-put-layer(car(vlax-safearray->list(vlax-variant-value x)))y))

love1030312 发表于 2014-6-12 08:01:01

77077 发表于 2014-6-12 00:26 static/image/common/back.gif
;双向偏移,并将偏移后的对象放置到相应图层
(if (ssget '((0 . "Arc,Circle,Ellipse,*Line")))
      ( ...

大哥 能把你该好的程序直接发上来吗 ?我加了不行啊

love1030312 发表于 2014-6-12 08:16:08

lostbalance 发表于 2014-6-11 23:28 static/image/common/back.gif
lz的程序里,好像是调用的autocad里的offset命令实现的偏移。印象中,高版本的autocad的offset命令支持图层 ...

大哥 那您贴个程序上来呗

lostbalance 发表于 2014-6-12 18:41:33

love1030312 发表于 2014-6-12 08:16 static/image/common/back.gif
大哥 那您贴个程序上来呗

1. 把程序里的"offset"全部替换成"offset" "L" "C"
2. 在(setq i(1+ i))后面加入(command "offset" "l" "s" "" "")
这个方法要求autocad的offset支持图层设置,2012版可以,其他版本不清楚。

love1030312 发表于 2014-6-12 19:23:43

lostbalance 发表于 2014-6-12 18:41 static/image/common/back.gif
1. 把程序里的"offset"全部替换成"offset" "L" "C"
2. 在(setq i(1+ i))后面加入(command "offset" "l"...

谢谢   朋友
页: [1]
查看完整版本: 图层问题