明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 890|回复: 5

[源码] 一段在系统图中绘制闸阀的程序

[复制链接]
发表于 2015-10-21 17:56 | 显示全部楼层 |阅读模式
;*****************************************************************************

;1、闸阀
(defun c:XTT_zf(/ os pw cc LT oh sc sc2 DN DN2 ps pdr aa pt1 pt2 pe pmd pmd1 pmd2 ptx pt3 pt4 ee txt)
  (setvar "cmdecho" 0)
  (setvar "blipmode" 0)
  (setq os (getvar "osmode"))
  (setq pw (getvar "plinewid"))
  (setq cc (getvar "cecolor"))
  (setq LT (getvar "celtype"))
  (setq oh (getvar "ORTHOMODE"))
  (setvar "ORTHOMODE" 1)
  (setvar "plinewid" 0)
  (setvar "CELTYPE" "continuous")
  (prompt "\n首次运行必须输入出图比例!!!")
  (setq sc (getstring "\n出图比例<默认值>:" ))
  (if (= sc "") (setq sc1 sc1)(setq sc1 sc))
  (setq sc2 sc1)
  (setq sc2 (atof sc2))
  (prompt "\n首次运行必须输入阀门公称尺寸!!!")
  (setq DN (getstring "\n阀门公称尺寸[10,15,20.....]<默认值>:" ))
  (if (= DN "") (setq DN1 DN1)(setq DN1 DN))
  (setq DN2 DN1)
  (setvar "osmode" 547)
  (setq ps (getpoint "\n插入点:"))
  (setq pdr (getpoint ps "\n方向:"))
  (setq aa (angle ps pdr))
  (setvar "osmode" 0)
  (if (null ang4) (sanjiao))
      (setq pt1 (polar ps (+ aa ang2) (* sc2 1.5)))
      (setq pt2 (polar ps (+ aa ang4) (* sc2 1.5)))
      (setq pmd (polar ps (+ aa ang1) (* sc2 4)))
      (setq pmd1 (polar pmd (+ aa ang2) (* sc2 1.5)))
      (setq pmd2 (polar pmd (+ aa ang4) (* sc2 1.5)))
     (if (= aa ang1)
          (setq ptx (polar pmd (+ aa ang2) (* sc2 2.0)))
   )
     (if (= aa ang3)
          (setq ptx (polar pmd (+ aa ang4) (* sc2 6.0)))
   )
     (if (= aa ang2)
          (setq ptx (polar pmd (+ aa ang3) (* sc2 2.0)))
   )
     (if (= aa ang4)
          (setq ptx (polar pmd (+ aa ang1) (* sc2 6.0)))
   )
      (setq pe (polar ps (+ aa ang1) (* sc2 8)))
      (setq pt3 (polar pe (+ aa ang2) (* sc2 1.5)))
      (setq pt4 (polar pe (+ aa ang4) (* sc2 1.5)))
  
   (setq ee (ssget ps pe))
   (if (/= ee nil) ;;判断线条是否存在,若存在则将其打断
      (command "break" ps pe)
   )
  
      (command "pline" pt1 pt2 pt3 pt4 "CL")
      (command "pline" pmd1 pmd2 "")
      (setvar "cecolor" "1" )
      (setq txt (strcat "DN" DN2))
    (if (= aa ang1)
    (progn
   (setq ptx (polar pmd ang2 (* sc2 2)))
    (command "text" "J" "BC" ptx (* sc2 3) 0 txt)
    )
  )
    (if (= aa ang3)
    (progn
   (setq ptx (polar pmd ang2 (* sc2 2)))
    (command "text" "J" "BC" ptx (* sc2 3) 0 txt)
    )
  )
    (if (= aa ang2)
    (progn
   (setq ptx (polar pmd ang3 (* sc2 2)))
    (command "text" "J" "BC" ptx (* sc2 3) 90 txt)
    )
  )
    (if (= aa ang4)
    (progn
   (setq ptx (polar pmd ang3 (* sc2 2)))
    (command "text" "J" "BC" ptx (* sc2 3) 90 txt)
    )
  )
   
    (if (and (> aa ang1)(< aa ang2))
    (progn
   (setq ptx (polar pmd (+ aa ang2) (* sc2 2)))
    (command "text" "J" "BC" ptx (* sc2 3) (rtod (+ aa ang1)) txt)
    )
  )
    (if (and (> aa ang2)(< aa ang3))
    (progn
   (setq ptx (polar pmd (+ aa ang4) (* sc2 2)))
    (command "text" "J" "BC" ptx (* sc2 3) (rtod (+ aa ang1 ang3)) txt)
    )
  )
    (if (and (> aa ang3)(< aa ang4))
    (progn
   (setq ptx (polar pmd (- aa ang2) (* sc2 2)))
    (command "text" "J" "BC" ptx (* sc2 3) (rtod (+ (- aa ang1) ang3)) txt)
    )
  )
    (if (and (> aa ang4)(< aa (* 2 PI)))
    (progn
   (setq ptx (polar pmd (+ aa ang2) (* sc2 2)))
    (command "text" "J" "BC" ptx (* sc2 3) (rtod aa) txt)
    )
  )
        (setvar "cecolor" cc)
   
  (setvar "plinewid" pw)
  (setvar "osmode" os)
  (setvar "CELTYPE" LT)
  (setvar "ORTHOMODE" oh)
  (prin1)
  )

发表于 2015-10-21 18:15 | 显示全部楼层
方向:; 错误: no function definition: SANJIAO
 楼主| 发表于 2015-10-21 18:20 | 显示全部楼层
cnks 发表于 2015-10-21 18:15
方向:; 错误: no function definition: SANJIAO

对不起,请将以代码加在程序的前面
;;;本程序可绘制各种阀门符号,开发日期:2014.05.25.程序设计:何勇
(defun sanjiao()
          (setq ang1 0)
          (setq ang2 (/ PI 2))
          (setq ang3 PI)
          (setq ang4 (/ (* 3 PI) 2))
)
;*****************************************************************************
;;;角度弧度互换函数
(defun rtod(val)
        (/ (* val 180.0) PI)        ; 弧度转十进位度
)

(defun dtor(val)
        (* (/ val 180.0) PI)        ; 十进位度转弧度
)
;*****************************************************************************
发表于 2015-10-21 18:23 | 显示全部楼层
ocoipw 发表于 2015-10-21 18:20
对不起,请将以代码加在程序的前面
;;;本程序可绘制各种阀门符号,开发日期:2014.05.25.程序设计:何勇 ...

楼主放个演示或者截图吧
发表于 2015-10-22 10:31 | 显示全部楼层
这个好,发个全套闸阀的吧
发表于 2015-10-22 20:40 | 显示全部楼层
支持楼主,这是楼主的工具中的片断吧
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-18 10:37 , Processed in 0.245098 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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