明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: Aenda

[提问] 请求大侠帮修改下,想有两种选择填充方式,一种是直接吸取内框填充另一种选择矩行填充

[复制链接]
 楼主| 发表于 2014-5-13 14:51:14 | 显示全部楼层
gaics 发表于 2014-5-12 21:52
改了什么?

跟16楼很像的 差不多,我的比他的还好点点
发表于 2014-5-13 15:09:26 | 显示全部楼层
  1. (defun c:q(/ p lst ss ent00 cmd_old)
  2.   (vl-load-com)
  3.   (setq lst '() cmd_old(getvar 'cmdecho) ent00(entlast))
  4.   (setvar 'cmdecho 0)  
  5.   (if (setq ss(ssget '((0 . "*line,arc,ellipse,circle"))))
  6.     (progn
  7.       (command "-HATCH" "p" "ansi31" "15" "0" "s" ss "" )
  8.       (while(setq p(getpoint))(command p))
  9.       (command "")      
  10.       (if (and ent00 (/= (cdr(assoc 5 (entget(entlast)))) (cdr(assoc 5 (entget ent00)))))
  11.         (progn
  12.           (vlax-put(vlax-ename->vla-object(entlast))'color 250)
  13.           (princ "ok!")
  14.           )
  15.         (princ "The hatch object creat unsuccessfully!"))
  16.       )
  17.     (progn
  18.       (command "-HATCH" "p" "ansi31" "15" "0")
  19.       (while(setq p(getpoint))(command p))
  20.       (command "")
  21.       (if (and ent00 (/= (cdr(assoc 5 (entget(entlast)))) (cdr(assoc 5 (entget ent00)))))
  22.         (progn
  23.           (vlax-put(vlax-ename->vla-object(entlast))'color 250)
  24.           (princ "ok!")
  25.           )
  26.         (princ "The hatch object creat unsuccessfully!"))
  27.       
  28.       )
  29.     )
  30.   (and cmd_old (setvar 'cmdecho cmd_old))
  31.   (princ)
  32.   )
 楼主| 发表于 2014-5-13 15:29:59 | 显示全部楼层
edata 发表于 2014-5-13 15:09

    ,已经很完美了,。  好像你这改动  意义在于可以同时选对象跟点选,...某些时候是比较方便,但是某些时候又觉得有点多余,很不错,赞一个,非常感谢
 楼主| 发表于 2014-5-14 10:51:01 | 显示全部楼层
edata 发表于 2014-5-13 15:09

edata  ,能我帮看看我源码问题吗? 不知道为什么有时候画着画着图,捕捉自动全部关闭了 ,还有颜色也自动跳到250号色。谢谢
(defun c:Q1 (/ s1 pt oldcolor snap)
(setq oldcolor (getvar "cecolor"))
(setq snap (getvar "osmode"))
(setvar "cecolor" "250")
(setvar "osmode" 0)
(princ "\n默认<拾取点>方式按右键或空格切换到<选择对象>方式:")
(if(setq pt(getpoint"\n指定内部点"))
  (progn
    (command "BHATCH" "p" "ansi31" "6" "0")
    (while pt(command pt)(setq pt(getpoint)))
    (command ""))
  (if(setq s1 (ssget))
    (command "BHATCH" "p" "ansi31" "6" "0" "s" s1 "" ""))
  )
(setvar "cecolor" oldcolor)
(setvar "osmode" snap)
(princ)
)
发表于 2014-5-14 11:10:03 | 显示全部楼层
Aenda 发表于 2014-5-14 10:51
edata  ,能我帮看看我源码问题吗? 不知道为什么有时候画着画着图,捕捉自动全部关闭了 ,还有颜色也自动 ...

因为你前面设置了当前颜色为250,捕捉关闭,
但是如果程序出现错误将不执行恢复,也就是倒数第四行和第五行没有哦执行,也就造成了当前颜色和捕捉被更改,无法复原。
你可以加入出错处理程序,可以在论坛搜到,也可以参考我最后的代码,因为我只改变了cmdecho变量,即使出错了,影响也不是很大。
 楼主| 发表于 2014-5-14 11:34:47 | 显示全部楼层
edata 发表于 2014-5-14 11:10
因为你前面设置了当前颜色为250,捕捉关闭,
但是如果程序出现错误将不执行恢复,也就是倒数第四行和第五 ...

edata, 谢谢你的热心指导,我懂了,
能在我基础上编写一个完整的吗? 我是新手不太懂,谢谢...
发表于 2014-5-14 12:19:00 | 显示全部楼层
本帖最后由 peraperson 于 2014-5-14 12:23 编辑
Aenda 发表于 2014-5-14 10:51
edata  ,能我帮看看我源码问题吗? 不知道为什么有时候画着画着图,捕捉自动全部关闭了 ,还有颜色也自动 ...

(defun c:Q1 (/ s1 pt oldcolor snap)
(dfl_var)
(setvar "cecolor" "250")
(setvar "osmode" 0)
(princ "\n默认<拾取点>方式按右键或空格切换到<选择对象>方式:")
(if(setq pt(getpoint"\n指定内部点"))
  (progn
    (command "BHATCH" "p" "ansi31" "6" "0")
    (while pt(command pt)(setq pt(getpoint)))
    (command ""))
  (if(setq s1 (ssget))
    (command "BHATCH" "p" "ansi31" "6" "0" "s" s1 "" ""))
  )
(*error* nil)
(princ)
)



(defun dfl_var ()
(setq e_lst (mapcar (function (lambda (n) (list 'setvar n (getvar n))))
'("cecolor" "clayer"  "autosnap" "osmode"  )))
(defun *error* (msg) (mapcar 'eval e_lst))
)
 楼主| 发表于 2014-5-14 13:58:28 | 显示全部楼层
peraperson 发表于 2014-5-14 12:19
(defun c:Q1 (/ s1 pt oldcolor snap)
(dfl_var)
(setvar "cecolor" "250")

兄台,可以可行吗?
 楼主| 发表于 2014-5-19 13:41:36 | 显示全部楼层
edata 发表于 2014-5-14 11:10
因为你前面设置了当前颜色为250,捕捉关闭,
但是如果程序出现错误将不执行恢复,也就是倒数第四行和第五 ...

大神,能帮帮我优化下吗 ,楼下那个也不行耶。还是会失去捕捉。
 楼主| 发表于 2014-5-19 13:42:23 | 显示全部楼层
peraperson 发表于 2014-5-14 12:19
(defun c:Q1 (/ s1 pt oldcolor snap)
(dfl_var)
(setvar "cecolor" "250")

还是不行,捕捉还原不了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-24 16:14 , Processed in 0.173272 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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