cjjh8301 发表于 2020-11-16 10:27:52

求助简化填充

自带的填充过程:命令,跳出对话框,点选择对象,选择对象,回车,再跳出对话框,点确认结束
这个过程有点多,能不能一个命令直接点选封闭对象,回车就填充结束,图案ANSI31,比例100!
有劳!

xj6019 发表于 2020-11-16 10:27:53



(defun c:TC (/ opt )
(setvar "measurement" 1)   ; 设置公制单位
(setvar "cmdecho" 0)         ; 关闭命令响应
(setq oldcolor (getvar "cecolor"))
(if *num_HType*
(setq num_HType (getint (strcat "\n选择填充样式①填充SOLID ②填充ANSI31 : <" (rtos *num_HType* 2 0) ">")))
(setq num_HType (getint "\n选择填充样式①填充SOLID ②填充ANSI31: " ))
)
(if (not num_HType)
(setq num_HType *num_HType*)
(setq *num_HType* num_HType)
)
(setq opt num_HType)

(if (< 0 opt 10) (eval (read(strcat "(tianchong" (itoa opt) ")"))));根据选项参数执行填充样式

(if (setq ss (ssget))
(command "bhatch" "s" ss "" "") ;如果选择集不为空,则执行对象填充
(progn;如果选择集为空,则执行点选命令
(prompt "\n请拾取填充部点:\n")
(command "bhatch" pause)
(while (> (getvar "CMDACTIVE") 0) (command PAUSE))
))

(command "color" oldcolor)
(princ)
)
(defun tianchong1 ()
(prompt "\n当前样式: ①填充SOLID\n")
(prompt "\n请选择对象,跳过则为拾取点:\n")
(command "color" "20");改填充的颜色
(command "bhatch" "p" "SOLID" "500" "0" "")
)
(defun tianchong2 ()
(prompt "\n当前样式: ②填充ANSI31\n")
(prompt "\n请选择对象,跳过则为拾取点:\n")
(command "color" "8");改填充的颜色
(command "bhatch" "p" "ansi31" "100" "0" "")
)








陨落 发表于 2020-11-16 10:48:50

addselected

1006015131 发表于 2020-11-16 11:28:46

(defun c:tt ()
      (vl-cmdf "bhatch" "p" "ANSI31" 100"")
      (princ)
)

xj6019 发表于 2020-11-16 11:37:07

更简洁可以这样
(defun C:TC ()
(setq SS (ssget ":S" '()))
(command "bhatch" "P""ansi31" "100" "0" "")
(command "bhatch" "s" SS "" "")
)

cjjh8301 发表于 2020-11-16 17:53:16

xj6019 发表于 2020-11-16 11:37
更简洁可以这样
(defun C:TC ()
(setq SS (ssget ":S" '()))


这个简洁,但是不支持闭口的多行线!

xj6019 发表于 2020-11-16 18:21:52

cjjh8301 发表于 2020-11-16 17:53
这个简洁,但是不支持闭口的多行线!

尽量用上面的吧,上面的还可以批量

999999 发表于 2020-11-18 09:31:48

xj6019 发表于 2020-11-16 11:25
(defun c:TC (/ opt )
(setvar "measurement" 1)   ; 设置公制单位
(setvar "cmdecho" 0)      ...

您好大神,我这边结合您提供的代码和其它大神提供的代码试着改了一下,请问您可以帮我修改一下吗?
就是:输入命令、选择对象(默认是框选)没有选择对象后按空格就是拾取点模式选择,如果选择对象后就直接生成图案,
下面的有多余的代码但是我不知道哪个是多余的,大神能帮忙改一下,并删一下多余的吗

(defun c:H8 (/ opt )
(setvar "measurement" 1)   ; 设置公制单位
(setvar "cmdecho" 0)         ; 关闭命令响应
(setq oldlay (getvar "CLAYER"));把目前的图层记忆起来
       (setq oldhpname (getvar "HPNAME"));把目前的填充记忆起来            
       (command "-layer" "m" "layer3""")
(command "bhatch" "p" "u" "" "600" "Y" qw "")   
(if (setq ss (ssget))
(command "bhatch" "s" ss "" "") ;如果选择集不为空,则执行对象填充
(progn;如果选择集为空,则执行点选命令
(prompt "\n请拾取填充部点:\n")
(command "bhatch" "p" "u" "" "600" "Y" qw "")   
(while (> (getvar "CMDACTIVE") 0) (command PAUSE))
))
(setvar "HPNAME" oldhpname);把刚刚记忆起来的填充变成目前的填充
       (setvar "clayer" oldlay);把刚刚记忆起来的图层变成目前的图层   
(princ)
)

xj6019 发表于 2020-11-18 10:27:29

999999 发表于 2020-11-18 09:31
您好大神,我这边结合您提供的代码和其它大神提供的代码试着改了一下,请问您可以帮我修改一下吗?
就是 ...

也没什么多余的吧

999999 发表于 2020-11-18 15:01:13

xj6019 发表于 2020-11-18 10:27
也没什么多余的吧

您可以帮忙改一下吗?我这边只能实现框选就结束了,就是:输入命令、选择对象(默认是框选)没有选择对象后按空格就是拾取点模式选择,如果框先选择对象后就直接生成图案,
页: [1] 2 3
查看完整版本: 求助简化填充