永发信息网

cad visual lisp语言编程问题

答案:2  悬赏:10  手机版
解决时间 2021-02-28 17:09
求源程序及程序每一步骤的详细解释 有过程分析更好



最佳答案
(defun C:HZTY ( / #os1 @cd1 @cd2 @p1 @p2 @p3 ang1 ang2 ang3 ang4 cd gd jd p1 p2 p3 p4)
 (setq #os1 (getvar "osmode"));取得捕捉设置
 (if (setq p1 (getpoint "\n请指定基点"));如果没有指定就结束
  (progn
   (if (setq CD (getdist p1 "\n请指定长度"));如果没有输入就结束
    (progn
     (if (setq GD (getdist p1 "\n请指定高度"));如果没有输入就结束动作
      (progn
       (if (setq JD (getreal "\n请指定角度"));如果没有输入就结束
        (progn;如果有输入,那么
         (setvar "osmode" 0);捕捉设置为0
         (setq ang1 (angtof (rtos JD 2 5));角度转换为角度弧
               ang2 (+ ang1 1.570796);垂直角度弧
               p2 (polar p1 ang1 CD);计算点位置
               p3 (polar p2 ang2 GD)
               p4 (polar p1 ang2 GD);计算第4点位置
               @p1 p1;设置数值
               @p2 p2
               @p3 p3
               ang3 ang1
               ang4 ang2
               @CD1 CD
               @CD2 GD;方便下面计算的时候调整数值
         )
         (command "PLINE" p1 p2 p3 p4 "C");绘制长方形
         (if (> GD CD);如果输入的高度大于长度
          (progn
           (setq @p1 p2 @p2 p3 @p3 p4 ang3 (+ ang1 1.570796) ang4 (+ ang2 1.570796) @CD1 GD @CD2 CD);点的位置及角度进行调整
          )
         )
         (setq p1 (polar @p1 ang4 (* @CD2 0.5));定位点
               p2 (polar @p2 ang4 (* @CD2 0.5))
               p3 (polar @p3 ang3 (* @CD1 -0.5));计算椭圆3点
         )
         (command "_ellipse" p1 p2 p3);绘制椭圆
         (setq p1 (polar @p1 ang3 (* @CD1 0.5))
               p2 (polar p1 ang4 (* @CD2 0.5))
               p4 (polar p2 ang3 (* @CD2 -0.5))
               p2 (polar p2 ang3 (* @CD2 0.5));计算正方形4点
         )
         (command "PLINE" p1 p2 p3 p4 "C");绘制正方形
         (setvar "osmode" #os1);捕捉设置还原
        )
       )
      )
     )
    )
   )
  )
 )
 (prin1)
);复制到记事本,以【.lsp】为后缀命名,命令【HZTY】,加载autoLISP就可以使用
;程序不是很完美但是可以绘制你要的图形
全部回答
(princ "\n加载成功!启动快捷键 ccc") ;;;加载active x功能 (vl-load-com) ;;;定义模型空间指针 (setq mspace (vla-get-modelspace (vla-get-activedocument (vlax-get-acad-object)) ) ) ;;;度->弧度函数 (defun detorad (numberofdegrees) (* pi (/ numberofdegrees 180.0)) ) ;;;主程序 (defun c:ccc (/ pt1 pt2 len deg deg1 deg2 key) ;;;获取基点,第二个角点(或边长,角度,设置默认值) (setq pt1 (getpoint "\n点取或输入一个角点:")) (initget "b b") (setq pt2 (getpoint pt1 "\n点取或输入第二个角点或指定边长(b):") ) (if (= pt2 "b") (progn (setq len (getdist "\n点取或输入边长(默认为1000):")) (if (not len) (setq len 1000) ) ) ) (if len (setq deg (getint "\n输入图形与水平轴的夹角(默认为0):")) ) (if (not deg) (setq deg 0) ) (if (and pt2 (/= pt2 "b")) (setq len (distance pt1 pt2) deg (angle pt1 pt2) ) ) ;;;获取绘图方向,逆时针/顺时针 (initget "+ -") (setq key (getpoint "\n选取方向参考点或输入“+”(逆时针),“-”(顺时针)(默认逆时针):" ) ) (if (and key (and (/= key "+") (/= key "-"))) (progn (setq deg1 (angle pt1 key ) deg2 (angle pt1 pt2) deg1 (- deg1 deg2) ) (cond ((<= deg1 pi) (setq key "+")) ((> deg1 pi) (setq key "-")) ) ) ) (if (not key) (setq key "+")) (draw pt1 len deg key) (princ) ) ;;;画线子程序 (defun draw (pt1 len deg key / rr deg2 ptn num) ;;;计算半径,首次偏移距离 (setq rr (/ len (+ 8 (* (sqrt 3) 2))) l1 (* (/ rr (sqrt 3)) 2) pt pt1 num 5 ) (cond ((= key "+") (setq deg2 (+ deg (detorad 60)))) ((= key "-") (setq deg2 (- deg (detorad 60)))) ) (command "pline") ;;;画三角形 (repeat 3 (progn (command pt) (setq pt (polar pt deg len)) (cond ((= key "+")(setq deg (+ deg (detorad 120)) )) ((= key "-")(setq deg (- deg (detorad 120)) )) ) ) ) (command "c") ;;; 画圆形 (setq pt1 (polar (polar pt1 deg l1) deg2 l1)) (repeat 5 (progn (setq pt pt1) (repeat num (progn (vla-addcircle mspace (vlax-3d-point pt) rr) (setq pt (polar pt deg2 (* rr 2))) ) ) (setq pt1 (polar pt1 deg (* rr 2)) num (1- num)) ) ) )
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
求给老婆送花求原谅的创意点子(最好是持续送
调解使用的法律条款及理解
①偶函数的图像一定与 轴相交;②奇函数的图
义和中心校地址在什么地方,想过去办事
2.1÷28=2.1÷________÷________2.5×3.2=2.
友情的记叙文400字,记叙文!
同庆楼华夏路店在什么地方啊,我要过去处理事
我大一想转到建筑学,大家进来给个意见
复试一定要联系导师吗
概念网咖在什么地方啊,我要过去处理事情
26÷25分之13÷22分之15
圆有无数条对称轴,每一条对称轴都是
奎文裴志祯诊所我想知道这个在什么地方
醉高台姆妈小菜在哪里啊,我有事要去这个地方
大唐双龙传漫画 李秀宁结局?说一下漫画中所
推荐资讯
中国扬子集团怎么去啊,有知道地址的么
【我要问Touch the books!的否定句!】
顺德容桂哪里有维修PS3的店
有谁知道西安的风水师?指导房屋风水问题
管理中最大的黑洞就是执行力问题 谁说的
电脑:dell xps 12-9Q33 开不了机,按F2和F12
在金堂车辆乱仃乱放违章,可在异地处理不
如何从心理学角度看人们爱收集世博馆盖章等现
土耳其也不少什么好东西,当初阻挠中国航母
逆战现在坑钱吗?是那种没钱玩儿不好的游戏吗
如何判断别人的身体有毒素?如何排毒?
陕西知人广告传媒有限公司我想知道这个在什么
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?