明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 506|回复: 9

[提问] 修改填充图案基点,想加个出错函数。

[复制链接]
发表于 2019-12-1 13:57 | 显示全部楼层 |阅读模式
5明经币
正常执行,没有问题,可以先选择,再指定基点,也可以后选择指定基点,执行都没问题,不选对象空格,直接结束,也没问题,就是中途按ESC,退出,有点麻烦,哪位老师,能帮我加个出错函数吗?中途ESC退出后,取消所有操作,退出,下面是我编的简单源码。
(defun c:hd ()
(setvar "CMDECHO" 0)
(setq SS (ssget))
(if (/= ss nil)   
         (command"-hatchedit" SS "o""s"(getpoint "\n指定的填充原点:")"y")
         )
(setvar "CMDECHO" 1)
(princ)
)
附件: 您需要 登录 才可以下载或查看,没有账号?注册

最佳答案

查看完整内容

(defun c:hd (/ *error* *error*_bak cmdecho ss t-error) (defun T-error (msg) (setq *error* *error*_bak) (setq pt (Vla-get-Origin (vlax-ename->vla-object (ssname ss 0 )))) (setq pt (vlax-safearray->list (vlax-variant-value pt))) (vlax-invoke-method (vlax-get (vlax-get-acad-object) 'activedocument) 'sendcommand (strcat "(command '" (vl-prin1-to-string pt) " \"Y\") ") ) ...
发表于 2019-12-1 13:57 | 显示全部楼层
(defun c:hd (/ *error* *error*_bak cmdecho ss t-error)
        (defun T-error (msg)
                (setq *error* *error*_bak)
                (setq pt (Vla-get-Origin (vlax-ename->vla-object (ssname ss 0 ))))
                (setq pt (vlax-safearray->list (vlax-variant-value pt)))
                (vlax-invoke-method
                        (vlax-get (vlax-get-acad-object) 'activedocument)
                        'sendcommand
                        (strcat "(command '" (vl-prin1-to-string pt) "  \"Y\") ")
                )
                (princ)
        )
        (if (setq ss (ssget ":E:S" '((0 . "HATCH"))))   
                (progn
                        (setq *error*_bak *error*)
                        (setq *error* T-error)
                        (setq CMDECHO (getvar "CMDECHO"))
                        (setvar "CMDECHO" 0)
                        (command "-hatchedit" ss "o" "s" (getpoint "\n指定的填充原点:") "y")
                        (setvar "CMDECHO" CMDECHO)
                )
        )
        (princ)
)
这个凑合用能
回复

使用道具 举报

发表于 2019-12-1 14:20 | 显示全部楼层
本帖最后由 taoyi0727 于 2019-12-1 14:25 编辑

(defun c:hd (/ cmdecho ss)
        (if (setq SS (ssget '((0 . "HATCH"))))   
                (progn
                        (setq CMDECHO (getvar "CMDECHO"))
                        (setvar "CMDECHO" 0)
                        (command "-hatchedit" SS "o" "s" (getpoint "\n指定的填充原点:") "y")
                        (setvar "CMDECHO" CMDECHO)
                )
        )
        (princ)
)
不用加错误函数吧
回复

使用道具 举报

 楼主| 发表于 2019-12-1 14:26 | 显示全部楼层
taoyi0727 发表于 2019-12-1 14:20
(defun c:hd (/ cmdecho ss)
        (if (setq SS (ssget '((0 . "HATCH"))))   
                (progn

]好吧,老师,我感觉差别不大
回复

使用道具 举报

发表于 2019-12-1 16:29 | 显示全部楼层
(defun c:hd (/ e name pt pt-new ss)
        (if (setq SS (ssget '((0 . "HATCH"))))
                        (while (setq name (ssname ss 0))
                                (setq e (vlax-make-safearray vlax-vbDouble '(0 . 1)))
                                (setq pt (getpoint))
                                (setq pt-new (vlax-make-variant (vlax-safearray-fill e (list (car pt) (cadr pt)))))
                                (Vla-put-Origin (vlax-ename->vla-object name) pt-new)
                                ;(vla-Update obj)
                                (entupd name)
                                (ssdel name ss)
                        )
        )
        (princ)
)
上面的能改原点位置,但是图像始终就是不变,搞不定了
只能帮你到这里了
回复

使用道具 举报

发表于 2019-12-1 16:31 | 显示全部楼层
没有想明白,实际原点的值是改变了的,但图像就是不变,待高手指点
回复

使用道具 举报

 楼主| 发表于 2019-12-1 16:37 | 显示全部楼层
taoyi0727 发表于 2019-12-1 16:31
没有想明白,实际原点的值是改变了的,但图像就是不变,待高手指点

确实哈,图案没有变,我还是用原来的吧
回复

使用道具 举报

发表于 2019-12-1 16:53 | 显示全部楼层
(defun c:hd () (command"-hatchedit"(ssget)"o""s"(getpoint "\n指定的原点:")"y"))
回复

使用道具 举报

 楼主| 发表于 2019-12-2 10:43 | 显示全部楼层
taoyi0727 发表于 2019-12-1 17:27
(defun c:hd (/ *error* *error*_bak cmdecho ss t-error)
        (defun T-error (msg)
                (setq *error* *erro ...

谢谢老师,这个比我那个好用哈!基本就是我要的那个效果了!
回复

使用道具 举报

发表于 2019-12-10 17:40 | 显示全部楼层
感谢感谢!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-17 11:23 , Processed in 0.205447 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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