明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3275|回复: 10

UCS的错误在哪里?

[复制链接]
发表于 2008-6-11 02:33 | 显示全部楼层 |阅读模式
(DEFUN C:UO( / QQQ  )
   
  (SETQ qqq (nentsel "Please choose an object:"))

  (command "ucs" "_ob" (car qqq))
)

想通过nentsel函数选择块中的物体来改变坐标系,但是一直没有成功。
请问这个lisp错误在哪里?
请高手帮忙
发表于 2008-6-11 15:33 | 显示全部楼层
不是程序的问题,只是概念的问题.
(car qqq)得到的是块定义的图元,这个不是独立的或者可以通俗点说不存在的,也就是这个选择的图元事实上在不炸开块的情况下只是一个指针,所以不能用它来定义ucs,不知道对不对,个人理解.
 楼主| 发表于 2008-6-12 01:40 | 显示全部楼层

用nentsel函数是能够读出块中图元的信息的

既然能够获得块中图元的信息,那么剩下的过程应该是和CAD本身UCS命令一样的

但是实际上却没有成功!

不理解

 楼主| 发表于 2008-6-22 00:52 | 显示全部楼层

有没有什么变通的方法可以实现这个功能?

请大家帮助!

发表于 2008-6-22 23:02 | 显示全部楼层

entmake后用ucs obj

再删除新生成的实体

发表于 2008-6-23 09:59 | 显示全部楼层

呵呵,给个建议,放弃这种想法。直接用两点定坐标系,第三点系统自动判断。

命令是ucs,然后点两点,回车两下。

发表于 2008-6-23 11:32 | 显示全部楼层
(defun c:bb ()                                                  
    (command "._UCS" "_OB")
)
发表于 2008-6-23 11:42 | 显示全部楼层
  1. (DEFUN C:U_O( / QQQ pm pn ss aa bb scr x y en );转换ucs到子物体
  2.   (SETQ qqq (nentsel "Please choose an sub object:"))
  3.   (setq pm (getvar "vsmax"))
  4.   (setq pn (getvar "vsmin"))
  5.   (setq dd (/ (- (car pm) (car pn)) (- (cadr pm) (cadr pn))))
  6.   (setq aa (getvar "viewsize"))
  7.   (setq bb (* aa dd))
  8.   (setq scr (getvar "screensize"))
  9.   (SETQ AA (/ AA (CAR SCR)) BB (/ BB (CADR SCR)))
  10.   (SETQ X (* AA (GETVAR "CURSORSIZE") 0.5) Y (* BB (GETVAR "CURSORSIZE") 0.5))
  11.   (sssetfirst nil (ssadd (car (last qqq))))
  12.   (command "-refedit" "O" "a" "y")
  13.   (SETQ SS (SSGET "C" (MAPCAR '- (CADR qqq) (list x y 0)) (MAPCAR '+ (CADR qqq) (list x y 0))))
  14.   (setq en (ssname ss 0))
  15.   (command "ucs" "_ob" en)
  16.   (command "refclose" "d" )
  17. )
 楼主| 发表于 2008-6-24 21:13 | 显示全部楼层

命令:
命令:
命令: u_o
Please choose an sub object:-refedit 选择嵌套层次 [确定(O)/下一个(N)] <下一个>:
O
输入对象选择方法 [全部(A)/嵌套(N)] <全部>: a
显示属性定义 [是(Y)/否(N)] <否>: y

关联填充图元位于锁定或冻结的图层上。未执行更新。

关联填充图元位于锁定或冻结的图层上。未执行更新。

关联填充图元位于锁定或冻结的图层上。未执行更新。

关联填充图元位于锁定或冻结的图层上。未执行更新。

关联填充图元位于锁定或冻结的图层上。未执行更新。

没有运行成功,因为我的块是外部参照,不能编辑

xiexie

发表于 2008-6-25 08:10 | 显示全部楼层

(setq pick_old (getvar "pickpirst"))

(setvar "pickpirst" 1);开始加上

.........

(setvar "pickpirst" pick_old);结尾加上

试试

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

本版积分规则

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

GMT+8, 2024-4-28 11:34 , Processed in 0.304541 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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