土木在线论坛 \ 建筑设计 \ CAD下载及教程 \ 找高手帮忙改

找高手帮忙改

发布于:2006-10-24 17:03:24 来自:建筑设计/CAD下载及教程 [复制转发]
( DEFUN C:tt1 ()
(defun getmidpoint(pt1 pt2) (mapcar ’(lambda (x y)(/(+ x y) 2.0)) pt1 pt2) )

(SETQ PT_1 (GETPOINT "选择塔段左下角端点 : ")) ;;塔段左下角坐标
(SETQ width_low (GETREAL "输入塔段下宽 : ")) ;;塔段下宽
(SETQ width_high (GETREAL "输入塔段上宽 : ")) ;;塔段上宽
(SETQ high (GETREAL "输入塔段高度 : ")) ;;塔段高度
(SETQ PT_2 (LIST (+ (CAR PT_1) width_low) (CADR PT_1) )) ;;计算塔段右下角点坐标
(SETQ PT_3 (LIST (+ (CAR PT_1) (* 0.5 (- width_low width_high ) ) ) (+ (CADR PT_1) high) ) )
;;计算塔段左上角点坐标
(SETQ PT_4 (LIST (+ (CAR PT_3) width_high) (CADR PT_3) ) )
;;计算塔段右上角点坐标
(SETQ PT_5 (LIST (/ (+ (CAR PT_1) (CAR PT_3) ) 2) (/ (+ (CADR PT_1) (CADR PT_3) ) 2) ))
;;计算塔段左中点坐标
(SETQ PT_6 (LIST (/ (+ (CAR PT_2) (CAR PT_4) ) 2) (/ (+ (CADR PT_2) (CADR PT_4) ) 2) ))
;;计算塔段右中点坐标
(SETQ PT_7 (inters PT_6 PT_3 PT_5 PT_4 )) ;;找到两条线的交点
(SETQ PT_8 (inters PT_6 PT_1 PT_5 PT_2 )) ;;找到两条线的交点
(SETQ mi_1 (getmidpoint PT_3 PT_7)) ;;找到两点中点
(SETQ mi_2 (getmidpoint PT_5 PT_7))
(SETQ mi_3 (getmidpoint PT_3 PT_5))
(SETQ mi_4 (getmidpoint PT_4 PT_7))
(SETQ mi_5 (getmidpoint PT_6 PT_7))
(SETQ mi_6 (getmidpoint PT_6 PT_4))
(SETQ mi_7 (getmidpoint PT_1 PT_5))
(SETQ mi_8 (getmidpoint PT_1 PT_8))
(SETQ mi_9 (getmidpoint PT_5 PT_8))
(SETQ mi_10 (getmidpoint PT_2 PT_6))
(SETQ mi_11 (getmidpoint PT_2 PT_8))
(SETQ mi_12 (getmidpoint PT_6 PT_8)) ;;给出了腹杆的节点位置


(COMMAND "LINE" PT_1 PT_2 PT_4 PT_3 "C" ) ;;用线连接1,2,3,4,并封闭
(COMMAND "LINE" PT_1 PT_6 PT_3 "" )
(COMMAND "LINE" PT_2 PT_5 PT_4 "" )
(COMMAND "LINE" mi_1 mi_2 mi_3 "c" )
(COMMAND "LINE" mi_4 mi_5 mi_6 "c" )
(COMMAND "LINE" mi_7 mi_8 mi_9 "c" )
(COMMAND "LINE" mi_10 mi_11 mi_12 "c" )



(defun layer()

;;; 建立一个名为"ABC" 的新图层(红色)
;;; 接着指定给图层 "ABC"
(VL-LOAD-COM)
(setq AcadObject (vlax-get-acad-object)
AcadDocument (vla-get-ActiveDocument Acadobject)
mSpace (vla-get-ModelSpace Acaddocument))
;;; 建立新的图层
(setq layerSel(vla-get-Layers AcadDocument))
(setq layerObj(vla-add layerSel "ABC"))
(vla-put-Color layerObj acRed)
;; 建立选择集
(setq ttlk (ssget "X") )
;; 将新图层设成 "ABC"
(vla-put-Layer ttlk "ABC")
;;; 更新视图
(vla-Regen AcadDocument :vlax-true)
(princ (STRCAT "圆当前在图层: " (vla-get-Layer CircleObj) " 范例\n"))
(princ)
)






(princ)
)

全部回复(5 )

只看楼主 我来说两句
  • ladesinger
    ladesinger 沙发
    (SETQ PT_7 (inters PT_6 PT_3 PT_5 PT_4 )) ;;找到两条线的交点
    (SETQ PT_8 (inters PT_6 PT_1 PT_5 PT_2 )) ;;找到两条线的交点
    (SETQ mi_1 (getmidpoint PT_3 PT_7)) ;;找到两点中点
    (SETQ mi_2 (getmidpoint PT_5 PT_7))
    (SETQ mi_3 (getmidpoint PT_3 PT_5))
    (SETQ mi_4 (getmidpoint PT_4 PT_7))
    (SETQ mi_5 (getmidpoint PT_6 PT_7))
    (SETQ mi_6 (getmidpoint PT_6 PT_4))
    (SETQ mi_7 (getmidpoint PT_1 PT_5))
    (SETQ mi_8 (getmidpoint PT_1 PT_8))
    (SETQ mi_9 (getmidpoint PT_5 PT_8))
    (SETQ mi_10 (getmidpoint PT_2 PT_6))
    (SETQ mi_11 (getmidpoint PT_2 PT_8))
    (SETQ mi_12 (getmidpoint PT_6 PT_8)) ;;给出了腹杆的节点位置
    完全可以只用一个 SETQ:
    (SETQ PT_7 (inters PT_6 PT_3 PT_5 PT_4 )) ;;找到两条线的交点
    PT_8 (inters PT_6 PT_1 PT_5 PT_2 ) ;;找到两条线的交点
    mi_1 (getmidpoint PT_3 PT_7) ;;找到两点中点
    ……
    2006-10-28 20:15:28

    回复 举报
    赞同0
  • ladesinger
    ladesinger 板凳
    (COMMAND "LINE" PT_1 PT_2 PT_4 PT_3 "C" )

    也许 新版本的AUTOCAD 的LINE命令有 "C"选项? 没注意……
    2006-10-28 20:13:28

    回复 举报
    赞同0
加载更多
这个家伙什么也没有留下。。。

CAD下载及教程

返回版块

52.08 万条内容 · 658 人订阅

猜你喜欢

阅读下一篇

高手请进

打开cad2002,总是提示——更新系统注册纪录失败,请试用regedit。怎么办?

回帖成功

经验值 +10