liminnet 发表于 2008-7-1 15:54:00

BDYCAD 发表于 2008-7-1 17:10:00

本帖最后由 作者 于 2008-7-1 17:11:07 编辑

第一个问题不难吧:)
第二个问题抽空做了一下:) 如下是代码,敬请参考:);;;功能: 摆水平对象
;;;编程: 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)
)

carrot1983 发表于 2008-7-1 17:19:00

<p>期待摆正块...</p>

liminnet 发表于 2008-7-1 17:35:00

liminnet 发表于 2008-7-1 17:57:00

ZZXXQQ 发表于 2008-7-1 22:28:00

这样试试:


(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)
)


caoyin 发表于 2008-7-2 10:42:00

本帖最后由 作者 于 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)
)

liminnet 发表于 2008-7-2 10:49:00

BDYCAD 发表于 2008-7-2 11:23:00

建议楼主大师自己改出自己想样的效果的代码出来 ,楼主也应该这样做:) 不要一味想着让大家来写出来啊.我们所能做的也就是做出来些和你想要相近效果的程序给你参考:)就象老师教学生,但老师不能代学习考试啊:)你自己写的话相信这里有这么多参考的程序,也不算难了,加油啊!
页: [1]
查看完整版本: 各位好,求两个简单的lsp,会的帮一下我吧!谢谢