明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 5032|回复: 29

[提问] 求助简化填充

[复制链接]
发表于 2020-11-16 10:27:52 | 显示全部楼层 |阅读模式
5明经币
自带的填充过程:命令,跳出对话框,点选择对象,选择对象,回车,再跳出对话框,点确认结束
这个过程有点多,能不能一个命令直接点选封闭对象,回车就填充结束,图案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 : "))) (setq num_HType (getint "\n选择填充样式 ①填充SOLID ②填充ANSI31: " )) ) (if (not num_HType) (setq num_HType *num_HType*) (setq *n ...
发表于 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" "")
)








评分

参与人数 2明经币 +2 收起 理由
执骨哟 + 1 很给力!
999999 + 1 赞一个!

查看全部评分

回复

使用道具 举报

发表于 2020-11-16 10:48:50 | 显示全部楼层
addselected
回复

使用道具 举报

发表于 2020-11-16 11:28:46 | 显示全部楼层
(defun c:tt ()
        (vl-cmdf "bhatch" "p" "ANSI31" 100  "")
        (princ)
)

回复

使用道具 举报

发表于 2020-11-16 11:37:07 | 显示全部楼层
更简洁可以这样
(defun C:TC ()
(setq SS (ssget ":S" '()))
(command "bhatch" "P"  "ansi31" "100" "0" "")
(command "bhatch" "s" SS "" "")
)
回复

使用道具 举报

 楼主| 发表于 2020-11-16 17:53:16 | 显示全部楼层
xj6019 发表于 2020-11-16 11:37
更简洁可以这样
(defun C:TC ()
(setq SS (ssget ":S" '()))

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

使用道具 举报

发表于 2020-11-16 18:21:52 | 显示全部楼层
cjjh8301 发表于 2020-11-16 17:53
这个简洁,但是不支持闭口的多行线!

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

使用道具 举报

发表于 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)
)

评分

参与人数 1明经币 +1 收起 理由
xj6019 + 1 淡定

查看全部评分

回复

使用道具 举报

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

也没什么多余的吧
回复

使用道具 举报

发表于 2020-11-18 15:01:13 | 显示全部楼层
xj6019 发表于 2020-11-18 10:27
也没什么多余的吧

您可以帮忙改一下吗?我这边只能实现框选就结束了,就是:输入命令、选择对象(默认是框选)没有选择对象后按空格就是拾取点模式选择,如果框先选择对象后就直接生成图案,
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-16 05:43 , Processed in 0.173538 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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