明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1647|回复: 2

Lisp大夫请进...

[复制链接]
发表于 2005-1-11 14:24:00 | 显示全部楼层 |阅读模式
以下程序想实现这样的动作:旋转坐标系,然后将所选的图块转回来使之看起来象没有变化一样(例如文字方向)。 有两个问题: 1、在(RoB311)里的(entmod)不会工作, 2、若想多次执行后图块仍可方向保持正确,应如何修改呢? 多谢指点! (defun C:RoViewPort(/ aunit c s)
(if (setq a (getangle"\n第一点将在新视图左侧,第二点在右侧..."))
(progn
(setvar "cmdecho" 0)
(setq aunit (getvar "AUNITS") )
(setvar "AUNITS" 3)
(setq c (getvar"VIEWCTR") s (getvar"VIEWSIZE") ) (if (wcmatch (findfile "acad.exe") "*R14*")
(command "ucs" "z" a)
(command "ucs" "n" "z" a)
)
(command "plan" "")
(command "ucs" "")
(command "zoom" "c" c s )
(princ"\n选择图块...")
(ROB311 a)
(setvar "AUNITS" aunit)
(setvar "cmdecho" 1)
(princ)
)
)
) (defun ROB311(aa / ss n old_list entname zkname pt oldangle newangle )
(if (setq ss (ssget '(0 . "insert")))
(progn
(setq n 0)
(princ"\nThe Selections are...\n")
(while (<= n (- (sslength ss) 1))
(setq old_list (entget (ssname ss n))
entname (cdr (assoc -1 old_list))
pt (cdr (assoc 10 old_list))
oldangle (cdr (assoc 50 old_list))
newangle aa
)
(IF (ASSOC 66 old_list)
(setq zkname (cdr (assoc 1 (entget (entnext entname)))) )
(setq zkname "*" )
)
;这两句为什么不动作呢? ;(setq old_list (subst (cons 50 newangle) (assoc 50 old_list) old_list))
;(entmod old_list)
;暂用此法
(command "rotate" entname "" pt newangle )
(princ(strcat ">>" zkname ))
(princ)
(setq n (+ n 1))
)
)
);if
)
发表于 2005-1-12 09:05:00 | 显示全部楼层
你再试试吧,我不是很清楚的过程,不过使用你注释掉的部分和原程序执行结果是一样的
发表于 2022-9-27 11:09:20 | 显示全部楼层
亡羊补牢,学而不晚,走走看看
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-2-23 10:15 , Processed in 0.189922 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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