求助简化填充
自带的填充过程:命令,跳出对话框,点选择对象,选择对象,回车,再跳出对话框,点确认结束这个过程有点多,能不能一个命令直接点选封闭对象,回车就填充结束,图案ANSI31,比例100!
有劳!
(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" "")
)
addselected (defun c:tt ()
(vl-cmdf "bhatch" "p" "ANSI31" 100"")
(princ)
)
更简洁可以这样
(defun C:TC ()
(setq SS (ssget ":S" '()))
(command "bhatch" "P""ansi31" "100" "0" "")
(command "bhatch" "s" SS "" "")
)
xj6019 发表于 2020-11-16 11:37
更简洁可以这样
(defun C:TC ()
(setq SS (ssget ":S" '()))
这个简洁,但是不支持闭口的多行线! cjjh8301 发表于 2020-11-16 17:53
这个简洁,但是不支持闭口的多行线!
尽量用上面的吧,上面的还可以批量 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)
)
999999 发表于 2020-11-18 09:31
您好大神,我这边结合您提供的代码和其它大神提供的代码试着改了一下,请问您可以帮我修改一下吗?
就是 ...
也没什么多余的吧 xj6019 发表于 2020-11-18 10:27
也没什么多余的吧
您可以帮忙改一下吗?我这边只能实现框选就结束了,就是:输入命令、选择对象(默认是框选)没有选择对象后按空格就是拾取点模式选择,如果框先选择对象后就直接生成图案,