llsheng_73 发表于 2013-11-19 13:45:30

本帖最后由 llsheng_73 于 2013-11-19 13:46 编辑

adc 发表于 2013-11-19 13:31 static/image/common/back.gif
还是要麻烦你帮忙,现在程序还是不能执行,我已经把完整的贴出来了麻烦帮忙看看
(defun SETLAYER(LAY CLR / AcDocument layerObj)
(vl-load-com)
(setq layerObj(vla-add(vla-get-Layers(setq AcDocument(vla-get-ActiveDocument(vlax-get-acad-object))))LAY))
(vla-put-ActiveLayer AcDocument layerObj)
(vla-put-Color layerObj CLR)
)


(defun SETLAYER_LSP(LAY CLR)
(if (=(tblobjname "LAYER" LAY) nil)
    (entmake (list'(0 . "LAYER")'(100 . "AcDbSymbolTableRecord")'(100 . "AcDbLayerTableRecord")
       '(6 . "CONTINUOUS")(cons 62 CLR)'(70 . 0)(cons 2 LAY)))) (setvar "CLAYER" LAY)
)


用上边两个函数中的任何一个都可以,最好别用COMMAND,很多命令会因为版本有点差异

adc 发表于 2013-11-20 10:44:56

llsheng_73 发表于 2013-11-19 13:45 static/image/common/back.gif
用上边两个函数中的任何一个都可以,最好别用COMMAND,很多命令会因为版本有点差异

我替换了还是不能执行,是不是这句有问题(and (setq E (ssname SS (setq I (1- I)))LA(strcat(cdr(assoc 8 e))"填充"))

llsheng_73 发表于 2013-11-20 11:03:03

adc 发表于 2013-11-20 10:44 static/image/common/back.gif
我替换了还是不能执行,是不是这句有问题(and (setq E (ssname SS (setq I (1- I)))LA(strcat(cdr(assoc...

你那个AND起什么作用的?

adc 发表于 2013-11-24 13:11:55

llsheng_73 发表于 2013-11-20 11:03 static/image/common/back.gif
你那个AND起什么作用的?

我也不清楚,这个程序不是我写的,删掉也还是不可以,麻烦帮忙看一下吧

llsheng_73 发表于 2013-11-24 13:13:38

弄了半天你找了个别人的程序!!
首先它原来能运行不?

adc 发表于 2013-11-24 13:28:53

llsheng_73 发表于 2013-11-24 13:13 static/image/common/back.gif
弄了半天你找了个别人的程序!!
首先它原来能运行不?

以前可正常运行的

llsheng_73 发表于 2013-11-24 13:54:53

(defun C:tt (/ old_clayer old-layer HPNAME SETLAYER_LSP)
(defun SETLAYER_LSP(LAY CLR)
    (if (=(tblobjname "LAYER" LAY) nil)
      (entmake (list'(0 . "LAYER")'(100 . "AcDbSymbolTableRecord")'(100 . "AcDbLayerTableRecord")
                  '(6 . "CONTINUOUS")(cons 62 CLR)'(70 . 0)(cons 2 LAY))))
    (setvar "CLAYER" LAY))
   (vl-load-com)
   (command "undo" "be")
   (setvar "CMDECHO" 0)
;(setq old_clayer (getvar "clayer"))
;(setq old-layer (tblsearch "layer" "PUB_HATCH"))
;(if (null old-layer) (command "-layer" "m" "PUB_HATCH" "c" 252 "" ""))
; (command"layer""t""PUB_HATCH""")
; (command"layer""on""PUB_HATCH""")
;(setvar "clayer" "PUB_HATCH")
   (vla-endundomark
   (vla-get-activedocument
       (vlax-get-acad-object)
   )
   )
   (vla-startundomark
   (vla-get-activedocument
       (vlax-get-acad-object)
   )
   )
   (setq HPNAME (getvar "HPNAME"))
   (setvar "HPNAME" "SOLID")
   (vl-catch-all-apply
   '(lambda (/ E I SS)
      (setq SS (ssget '((0 . "LWPOLYLINE"))))
             (repeat (setq I (sslength SS))
               (SETLAYER_LSP(setq E (ssname SS (setq I (1- I)))
                                  LA(strcat(cdr(assoc 8(entget E)))"填充"))7)
             ;(command "LAYER" "M"LA "S"LA"")
             (command ".-BHATCH" "S" E "" "")
                  ;;(command "hatch" "solid" E "")
             )
      )
   )
   (setvar "HPNAME" HPNAME)
   (vla-endundomark
   (vla-get-activedocument
       (vlax-get-acad-object)
   )
   )
   (setvar "clayer" old_clayer)
   (command "undo" "e")
   (princ)
)

q3_2006 发表于 2013-11-24 13:56:12

达到目的的思路就不好,应该随意填充,然后全图填充自动归并到相应层,因为图有可能是从别人那里接手的。不是要多一道处理吗?

llsheng_73 发表于 2013-11-24 19:31:29

q3_2006 发表于 2013-11-24 13:56 static/image/common/back.gif
达到目的的思路就不好,应该随意填充,然后全图填充自动归并到相应层,因为图有可能是从别人那里接手的。不 ...

正因为图可能从别人哪里接手,随意填充的话,最后归并更不好找依据了,按说楼主本来的想法是没什么问题的

yzr2002626 发表于 2013-11-25 18:22:42

程序有时能运行,有时不行。无效果
页: 1 [2] 3
查看完整版本: 填充的图层名