明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1738|回复: 3

请看看这个程序,有问题!

[复制链接]
发表于 2003-11-24 12:26:00 | 显示全部楼层 |阅读模式
该程序想在2004下用MATCHPROP,其选择的方式采用R14的方法,而不是2004的用"格式刷"选完物体,就马上变了,不能后悔.
(defun sele (msg / a)
  (prompt msg)
  (while (or (= (car (setq a (grread 2 4 2))) 5)))
  (if (= (car a) 3)
    (setq a (ssget (cadr a)))
  )
  a
)
(defun err (msg)
  (if (or
        (= msg "Function cancelled")
        (= msg "quit / exit abort")
      )
    (princ)
    (princ (strcat "\nError: " msg))
  )
  (setq *error* errtmp)
)
(defun c:maa (/ s ss)
  (setq        errtmp        *error*
        *error*        err
  )
  (setq s (sele "\nSelect source object:"))
  (if (listp s)
    (cond
      ((= s nil) (setq s (sel2 "\nSelect source object:")))
      ((or (= (car s) 2) (= (car s) 11)) (exit))
    )
    (setq s (ssname s 0))
  )
  (setq ss (ssget))
  (if (null ss)
    (exit)
  )
  (setvar "cmdecho" 0)
  (command "MATCHPROP" s ss "")
  (setq *error* errtmp)
  (setvar "cmdecho" 1)
  (princ)
)
;;当提示选择scource object时,按ESC,就会出现错误“Application ERROR: Console break”,怎么解决呢?
;;无法实现Select destination object(s) or [Settings]里的Settings 功能。
;;无法实现执行命令前选择一物体,然后执行命令后就默认为scource object,只提示用户选择目标物体了。
 楼主| 发表于 2003-11-24 12:27:00 | 显示全部楼层
关于特性匹配MATCHPROP在R14与2000i中有一个很大的不同,在R14中用户选择Select destination object(s)时,可以从选择集去掉因为失误而多选的对象。但是在2000i的版本中却选择一个就“刷”一个,没办法“后悔”
发表于 2003-11-24 14:06:00 | 显示全部楼层
;;当提示选择scource object时,按ESC,就会出现错误“Application ERROR: Console break”,怎么解决呢?
;;无法实现执行命令前选择一物体,然后执行命令后就默认为scource object,只提示用户选择目标物体了。
這兩個問題下面可以解決。

(defun c:maa () (vl-catch-all-apply 'maa nil)(princ))

(defun maa (/ ss1 e ss2)
  (setq ss1 (cadr (ssgetfirst)));取得先选择集
  (if (null ss1);先选择集为空
    (setq e (entsel "\nSelect source object:"))
    (if        (> (sslength ss1) 1);先选择集中不止一个物体
      (setq e (entsel "\nSelect source object:"))
      (setq e (ssname ss1 0));先选择集中有一个物体,直接用它
    )
  )
  (while (null e)
    (prompt "Nothing selected.")
    (setq e (entsel "\nSelect source object:"))
  )
  (sssetfirst nil nil);清除先选择集
  (setq ss2 (ssget);选择要修改的物体
  (if (null ss2)
    (exit)
  )
  (vl-cmdf "_.matchprop" e ss2 "")
)

;说明: vl-catch-all-apply 抑制所有错误信息,可以用相关函数捕捉这个信息。
 楼主| 发表于 2003-11-26 18:18:00 | 显示全部楼层
多谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-27 06:41 , Processed in 0.173893 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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