明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
123
返回列表 发新帖
楼主: cjjh8301

[提问] 求助简化填充

[复制链接]
发表于 2021-9-2 11:23:35 | 显示全部楼层
陈伟 发表于 2021-9-2 10:46
填充图案用  SOLID   在点选的时候会出问题(如果上次点选填充了,再次填充的时候会第一时间选择上一次填 ...

defun 后面把局部变量添加齐了  应该就好了
回复

使用道具 举报

发表于 2022-8-28 10:04:55 | 显示全部楼层
xj6019 发表于 2021-9-2 11:23
defun 后面把局部变量添加齐了  应该就好了

"填充图案用  SOLID   在点选的时候会出问题(如果上次点选填充了,再次填充的时候会第一时间选择上一次填充的范围并完成填充),其他图案没问题"
big兄嘚   这边问题可以帮忙改下吗重新发下吗  新手一枚  感谢感谢
回复

使用道具 举报

发表于 2022-12-1 11:03:39 | 显示全部楼层
xj6019 发表于 2020-11-16 10:27
(defun c:TC (/ opt )
(setvar "measurement" 1)     ; 设置公制单位
(setvar "cmdecho" 0)        ...

这个填充超级好用,但是不知道为什么,如果选择①SOLID这个预设,在无选择的情况下总会自动填充鼠标附近位置,或者自动填充刚创建好的对象。不给你选择机会。只有SOLID这个会这样,别的不会,我反复调换SOLID的序号测试了,就是SOLID会这样,别的任何都不会这样。
回复

使用道具 举报

发表于 2022-12-1 11:56:18 | 显示全部楼层
cheefeel 发表于 2022-12-1 11:03
这个填充超级好用,但是不知道为什么,如果选择①SOLID这个预设,在无选择的情况下总会自动填充鼠标附近 ...

老长时间没折腾了  这个代码我也快忘记了,大体改了改 你试试,也不知道行不行


(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 (and(< 0 opt 10)(setq sss (cadr (ssgetfirst))))
                (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" sss "SOLID" "500" "0" "")
)
(defun tianchong2 ()
        (prompt "\n当前样式: ②填充ANSI31\n")
        (prompt "\n请选择对象,跳过则为拾取点:\n")
        (command "color" "8");改填充的颜色
        (command "bhatch" sss "ansi31" "100" "0" "")
)
回复

使用道具 举报

发表于 2022-12-1 12:17:41 | 显示全部楼层
xj6019 发表于 2022-12-1 11:56
老长时间没折腾了  这个代码我也快忘记了,大体改了改 你试试,也不知道行不行

输入任何序号,结果都是ANSI31的样式了
回复

使用道具 举报

发表于 2022-12-1 13:04:00 | 显示全部楼层
cheefeel 发表于 2022-12-1 12:17
输入任何序号,结果都是ANSI31的样式了

那就换个写法试试
(defun c:TC (/   oldcolor opt ss)
        (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)
        )
        (cond
                ((= num_HType 1)
                        (command "color" "20");改填充的颜色
                        (setvar "HPNAME"  "SOLID")  
                )
                ((= num_HType 2)
                        (command "color" "8");改填充的颜色
                        (setvar "HPNAME"  "ansi31")  
                )
        )
        (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)
)
回复

使用道具 举报

发表于 2022-12-1 13:37:37 | 显示全部楼层
本帖最后由 cheefeel 于 2022-12-1 13:39 编辑
xj6019 发表于 2022-12-1 13:04
那就换个写法试试
(defun c:TC (/   oldcolor opt ss)
        (setvar "measurement" 1)     ; 设置公制单位
...


               ((= num_HType 2)
                        (command "color" "8");改填充的颜色
                        (command "bhatch" "an" "y" "p" "无效" "0.5" "0" "")
                        (setvar "HPNAME"  "ansi31")  

首先,这个确实不存在说意外自行填充,不给你选择填充对象的问题了。
其次,那个 改填充颜色 其实是无效的
然后,因为我不会,就拙劣地尝试了一下加入红色这行,其中蓝色值是无效的,实际由您重新编写的这个绿色的决定图案。

回复

使用道具 举报

发表于 2022-12-1 13:42:08 | 显示全部楼层
cheefeel 发表于 2022-12-1 13:37
((= num_HType 2)
                        (command "color" "8");改填充的颜色
    ...

改颜色的 其实意义不大  删掉就行了  
回复

使用道具 举报

发表于 2022-12-1 13:57:18 | 显示全部楼层
xj6019 发表于 2022-12-1 13:42
改颜色的 其实意义不大  删掉就行了

嗯,我删掉了。
(setvar "HPNAME"  "ansi31")
我不明白为什么您换成了这行↑

但是为了能像原来一样定制更多选项,还是删掉这行用原来的
(command "bhatch" "an" "y" "p" "图案名称" "0.5" "0" "")
形式来表达,似乎也没有问题。
回复

使用道具 举报

发表于 2022-12-1 14:05:26 | 显示全部楼层
cheefeel 发表于 2022-12-1 13:57
嗯,我删掉了。
(setvar "HPNAME"  "ansi31")
我不明白为什么您换成了这行↑

条条大路通罗马 只要马儿能干活就行了
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-16 05:56 , Processed in 0.146831 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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