第一个问题不难吧:)
第二个问题抽空做了一下:) 如下是代码,敬请参考:);;;功能: 摆水平对象
;;;编程: BDYCAD
;;;时间: 2008-07-01 香港回归11周年纪日
(defun c:rx(/ ENAME HPT PT1 PT2 SEL SELPT)
(if(setq Sel(entsel"\n请你选取要水平摆放的对象:"))
(progn
(setq Ename(car Sel)SelPt(cadr Sel))
(setq Hpt(vlax-curve-getClosestPointTo Ename SelPt T)
Pt1 Hpt Pt2(vlax-curve-getPointAtDist Ename (+ (vlax-curve-getDistAtPoint Ename Hpt) 0.1)))
(setvar"cmdecho"0)
(setvar "osmode" (logior (getvar "osmode") 16384));关辅捉
(command".rotate"sel"" pt1"r"pt1 pt2 0)
(setvar "osmode" (logand (getvar "osmode") 49151));开辅捉
(setvar"cmdecho"1)
(princ"\n水平摆位完成,谢谢使用,如有好的建议请联系BDYCAD:)")
)
(princ"\n没有选到对象,请再试一次:)")
)
(princ)
) <p>期待摆正块...</p> 这样试试:
(defun c:rx (
;/ PT PT1 SEL OLDOS
)
(setvar "CMDECHO" 0)
(setq oldos (getvar "OSMODE"))
(setvar "OSMODE" 0)
(if (setq Sel (entsel "\n请你选取要水平摆放的对象:")) (progn
(setq pt (cadr sel) pt1 (osnap pt "NEA")
ang (angle pt pt1)
ang (if (> ang pi) (- ang pi) ang)
ang (- ang (/ pi 2))
pt (polar pt1 ang 20))
(command ".rotate" sel "" pt1 "r" pt1 pt 0)
(princ "\n水平摆位完成,谢谢使用.)")
)
(princ "\n没有选到对象,请再试一次:)")
)
(setvar "OSMODE" oldos)
(setvar "cmdecho" 1)
(princ)
)
本帖最后由 作者 于 2008-7-2 10:53:08 编辑
:;(defun c:TT (/ SS AN N ENT)
(if (and (setq SS (ssget ":S" '((0 . "*text"))))
(setq AN (getangle "\n指定旋转角度: "))
)
(repeat (setq N (sslength SS))
(setq ENT (entget (ssname SS (setq N (1- N)))))
(entmod (subst (cons 50 AN) (assoc 50 ENT) ENT))
)
)
(princ)
)
建议楼主大师自己改出自己想样的效果的代码出来 ,楼主也应该这样做:) 不要一味想着让大家来写出来啊.我们所能做的也就是做出来些和你想要相近效果的程序给你参考:)就象老师教学生,但老师不能代学习考试啊:)你自己写的话相信这里有这么多参考的程序,也不算难了,加油啊!
页:
[1]