明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2307|回复: 11

[源码] 快速填充的多选问题

[复制链接]
发表于 2019-3-21 23:47:11 | 显示全部楼层 |阅读模式
本帖最后由 alexmai 于 2019-3-22 00:35 编辑

--------------------------------------------------------------------------------------------
明经找到这个资料,但都不是我想要的,我想设置“点选”为第一步,而不是“选择”为第一步
(defun C:kh (/ s1)                ;快速选择对象,填充图案
   (setvar "cmdecho" 0)
     (setvar "hpassoc" 1)  ;控制填充图案是否关联(1:是;0:否)
     (princ "\n快捷填充,请选择填充区域:(***跳过则为拾取内部点填充)")
    (if (setq s1 (ssget))
        (command "bhatch" "s" s1 "" "")
        (progn
            (princ "\n请拾取填充内部点:")
            (command "bhatch" pause)
         );progn
     );if
    (princ)
);defun


(defun C:H1 (/ s1 s2)
  (setvar "cmdecho" 0)
  (setvar "OSMODE" 0)
  (setvar "MEASUREINIT" 1)
  (setvar "MEASUREMENT" 1)
  (setvar "hpassoc" 1)   ;控制填充图案是否关联(1:是;0:否)
  (princ
    "\n快捷填充,请选择填充区域:(***跳过则为拾取内部点填充)"
  )
  (if (setq s1 (ssget))
    (command "layer"  "m"      "G-SLAB-HATCH(板填充)"
      "c"  "11"      ""   "lw"
      "0.13"  ""      "l"  "Continuous"
      ""   ""      "_.bhatch"  "p"
      "ANGLE,_o"  "40"      "45"  "s"
      s1          ""      ""
     )
    (progn
      (princ "\n请拾取填充内部点:")
          (IF (vl-cmdf "layer"  "m"      "G-SLAB-HATCH(板填充)"
      "c"  "11"      ""   "lw"
      "0.13"  ""      "l"  "Continuous"
      ""   ""
             "_.bhatch" (getpoint) "p"  "ANGLE,_o" "40" "45" "")
     (princ "\n请选择填充...")
     )
      )
  )
(princ)
)

--------------------------------------------------------------------------------------------
为了方便填充,特此写了这个快捷填充,快捷填充我上次设置好的内容,
但发觉不怎么好用,不知问题出现哪里?

另外,我想多选时填充为各自独立的填充,
而不是组合为一个整体填充,如何调整?
(defun c:hh ()
  (setvar "cmdecho" 0)
  (command "undo" "be")
  (command "-color" "8")
  (if
      (princ "\n请拾取填充内部点:(***跳过则为选择填充区域填充)")
      (setq pt (getpoint))
      (command "-bhatch" "O" "D" "L" "Y" pt "")
    (progn
      (princ "\n快捷填充,请选择填充区域")
      (setq ss (ssget '((0 . "POLYLINE,LWPOLYLINE,CIRCLE,ELLIPSE"))))
        (vl-load-com)
        (setq   i 0  )
        (setq num (sslength ss))
        (repeat num
            (setq entnam (ssname ss i))
            (command "-bhatch" "O" "D" "L" "Y" "s" ss "" "")
        )
      )
      (setq i (1+ i))
    )
  )
  (command "undo" "e")
  (princ)
)









"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2019-3-22 10:02:49 | 显示全部楼层
(defun c:tt5 ()
  (command "-color" "8")
        (setq t T)
  (while t
                (if
                        (setq pt (getpoint"\n请拾取填充内部点:(***跳过则为选择填充区域填充)"))
                        (command "-bhatch" "O" "D" "L" "Y" pt "")
                        (progn
                                (princ "\n快捷填充,请选择填充区域")
                                (setq ss (ssget '((0 . "POLYLINE,LWPOLYLINE,CIRCLE,ELLIPSE"))))
                                (setq   i -1  )
                                (setq num (sslength ss))
                                (repeat num
                                        (setq entnam (ssname ss (setq i (1+ i))))
                                        (command "-bhatch" "O" "D" "L" "Y" "s" entnam "" "")
                                )
                        )
                )
        )
  (princ)
)

评分

参与人数 1明经币 +1 收起 理由
alexmai + 1 赞一个!

查看全部评分

回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2019-3-22 10:27:54 | 显示全部楼层
start4444 发表于 2019-3-22 10:02
(defun c:tt5 ()
  (command "-color" "8")
        (setq t T)

        (setq t T)
  (while t

这两句是什么意思?

修改了一下,搞定,谢谢!
(defun c:hh ()
  (setvar "cmdecho" 0)
  (command "undo" "be")
  (command "-color" "8")
  (if
        (setq pt (getpoint"\n请拾取填充内部点:\(***跳过则为选择填充区域填充\)"))
        (command "-bhatch" "O" "D" "L" "Y" pt "")
     (progn
        (princ "\n快捷填充,请选择填充区域")
        (setq ss (ssget '((0 . "POLYLINE,LWPOLYLINE,CIRCLE,ELLIPSE"))))
        (setq   i -1  )
        (setq num (sslength ss))
        (repeat num
           (setq entnam (ssname ss (setq i (1+ i))))
           (command "-bhatch" "O" "D" "L" "Y" "s" entnam "" "")
        )
     )
  )
  (command "undo" "e")
  (princ)
)
发表于 2019-3-22 09:19:37 | 显示全部楼层
hh:    (if
      (princ "\n请拾取填充内部点:(***跳过则为选择填充区域填充)")
      (setq pt (getpoint))
      (command "-bhatch" "O" "D" "L" "Y" pt "")
条件怎么这么多.
发表于 2019-3-22 12:01:31 | 显示全部楼层
alexmai 发表于 2019-3-22 10:27
(setq t T)
  (while t

你自己对比一下就知道了,有的话可以循环选择,看需求
发表于 2024-8-9 22:26:36 | 显示全部楼层
start4444 发表于 2019-3-22 12:01
你自己对比一下就知道了,有的话可以循环选择,看需求

很棒,就是如果不点也不选择退不出循环,怎么加上退出设置呢
发表于 2024-8-10 06:55:47 | 显示全部楼层
试下效果!!!很好!
发表于 2024-8-10 14:17:01 | 显示全部楼层
本帖最后由 lee50310 于 2024-8-11 09:09 编辑
muai2010 发表于 2024-8-9 22:26
很棒,就是如果不点也不选择退不出循环,怎么加上退出设置呢

;;按Q键 ==> 离开
;;左击鼠==> 填满内部点
;;按enter键,SPACE键或右击鼠==> 选择填充区域

執行指令:tt6

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2024-8-10 21:57:49 | 显示全部楼层
lee50310 发表于 2024-8-10 14:17
;;按Q键 ==> 离开
;;左击鼠==> 填满内部点
;;按enter键,SPACE键或右击鼠==> 选择填充区域

感谢解答,好像有点问题

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2024-8-10 23:46:49 | 显示全部楼层
本帖最后由 lee50310 于 2024-8-10 23:56 编辑
muai2010 发碛� 2024-8-10 21:57
感谢解答,好像有点问题

填充要有封閉的物體,
你要畫一些矩型框 或 圓型框 在執行tt6程式 點選他門

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

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

本版积分规则

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

GMT+8, 2024-11-18 01:38 , Processed in 0.177062 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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