明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 402|回复: 11

衡重式挡土墙,取自论坛

  [复制链接]
发表于 6 天前 | 显示全部楼层 |阅读模式
(defun c:dtq ()
  (vl-load-com)
  (setvar "cmdecho" 0)
  (setq os (getvar "osmode"))
  (setvar "osmode" 0)

  ;; 定义衡重式挡土墙的默认参数(单位:厘米)
  (setq h-dtq (getreal "\n输入墙高 (cm) <600>: ") h-dtq (if h-dtq h-dtq 600))
  (setq b-dtq (getreal "\n输入墙顶宽 (cm) <75>: ") b-dtq (if b-dtq b-dtq 75))
  (setq bot-dtq (getreal "\n输入墙底宽 (cm) <291>: ") bot-dtq (if bot-dtq bot-dtq 291))
  (setq h1-dtq (getreal "\n输入一阶高度 (cm) <280>: ") h1-dtq (if h1-dtq h1-dtq 280))
  (setq platform-width (getreal "\n输入衡重台宽度 (cm) <100>: ") platform-width (if platform-width platform-width 100))
  (setq m2-dtq-top (getreal "\n输入墙背坡度上部 (1:m) <0.35>: ") m2-dtq-top (if m2-dtq-top m2-dtq-top 0.35))
  (setq m2-dtq-bot (getreal "\n输入墙背坡度下部 (1:m) <0.25>: ") m2-dtq-bot (if m2-dtq-bot m2-dtq-bot 0.25))
  (setq n-dtq (getreal "\n输入底边坡度 (n:1) <0.1>: ") n-dtq (if n-dtq n-dtq 0.1))
  (setq hj (getreal "\n输入墙趾高 (cm) <100>: ") hj (if hj hj 100))
  (setq face-slope (getreal "\n输入面坡 (1:m) <0.1>: ") face-slope (if face-slope face-slope 0.1))

  ;; 获取插入点
  (setq p1 (getpoint "\n拾取插入点(挡土墙左上角): "))
  (if p1
    (progn
      (setq p2 (polar p1 0 b-dtq))
      (setq p2-yy h1-dtq)
      (setq p2-xx (* p2-yy m2-dtq-top))
      (setq p21 (list (+ (car p2) p2-xx) (- (cadr p2) p2-yy)))
      (setq p22 (polar p21 0 platform-width))
      (setq p22-yy (- h-dtq h1-dtq))
      (setq p22-xx (* p22-yy m2-dtq-bot))
      (setq p3 (list (- (car p22) p22-xx) (- (cadr p22) p22-yy)))
      (setq p3-xx bot-dtq)
      (setq p3-yy (* p3-xx n-dtq))
      (setq p4 (list (- (car p3) p3-xx) (+ (cadr p3) p3-yy)))
      (setq p1-yy (- h-dtq hj p3-yy))
      (setq p1-xx (* p1-yy face-slope))
      (setq p6 (list (- (car p1) p1-xx) (- (cadr p1) p1-yy)))
      (setq p5 (polar p4 (* pi 0.5) hj))

      ;; 绘制挡土墙
      (command "pline" p1 p2 p21 p22 p3 p4 p5 p6 "c")

      ;; 标注
      (mkla "Dim-dtq" 3)
      (Vl-Cmdf "_Dimlinear" p1 p2 (Polar p1 (* 0.5 pi) 80))  ; 标注偏移量80cm
      (Vl-Cmdf "_Dimlinear" p4 p3 (Polar p3 (* 1.5 pi) 80))  ; 标注偏移量80cm
      (Vl-Cmdf "_Dimlinear" p6 p5 (Polar p5 (* 0.5 pi) 60))  ; 标注偏移量60cm
      (Vl-Cmdf "_Dimlinear" p4 p5 (Polar (mid-2pt p4 p5) (* 1 pi) 80))  ; 标注偏移量80cm
      (Vl-Cmdf "_Dimcontinue" "S" (List (Entlast) p4)) ; 连续标注
      (Vl-Cmdf (Polar p3 (* 1 pi) bot-dtq) "" "")

      ;; 标注坡度
      (setq str1 (strcat "1:" (rtos face-slope 2 2)))
      (setq ang (angle p6 p1))
      (setq pm (polar (mid-2pt p1 p6) (+ ang (* 0.5 pi)) 30))  ; 标注偏移量30cm
      (MkText "C" pm 25 (xd-rtd ang) str1 0.7)

      (setq str2 (strcat "1:" (rtos m2-dtq-top 2 2)))
      (setq ang (angle p2 p21))
      (setq pm (polar (mid-2pt p2 p21) (+ ang (* 0.5 pi)) 30))  ; 标注偏移量30cm
      (MkText "C" pm 25 (xd-rtd ang) str2 0.7)

      (setq str3 (strcat "1:" (rtos m2-dtq-bot 2 2)))
      (setq ang (angle p22 p3))
      (setq pm (polar (mid-2pt p22 p3) (+ ang (* 0.5 pi)) 30))  ; 标注偏移量30cm
      (MkText "C" pm 25 (xd-rtd ang) str3 0.7)

      (setq str4 (strcat (rtos n-dtq 2 2) ":1"))
      (setq ang (angle p4 p3))
      (setq pm (polar (mid-2pt p3 p4) (+ ang (* 0.5 pi)) 30))  ; 标注偏移量30cm
      (MkText "C" pm 25 (xd-rtd ang) str4 0.7)
    )
  )

  (setvar "osmode" os)
  (princ)
)

;; 创建标注样式
(defun makeBzys (BL_BZYS  / zx sty lst bl1 bl2 BL_val zg_txt size_jt gap_Line dimsty wzys)
  (setq wzys (MakeWzys "DimZT_PXT" 30 0.7)) ; 创建文字样式
  (setq lst (Fsxm-Split BL_BZYS "_"))
  (setq bl1 (atof (car lst)))
  (setq bl2 (atof (cadr lst)))
  (setq BL_val (/ bl1 bl2))
  (setq zg_txt (* bl2 3.0))
  (setq size_jt (* bl2 1.0))
  (setq gap_Line (* bl2 1.0))
  (setq dimsty (strcat "DIM_" BL_BZYS))
  (setq sty (tblsearch "dimstyle" dimsty))
  (if sty
    (vl-cmdf "-dimstyle" "r" dimsty)
    (progn
      (vl-cmdf "-dimstyle" "save" dimsty)
      (vl-cmdf "DIMTXSTY" wzys "DIMCLRT" "7" "dimlfac" (rtos BL_val 2 2) "dimtxt" (rtos zg_txt 2 0) "dimasz" (rtos size_jt 2 0) "DIMSCALE" "1" "dimexe" (rtos gap_Line 2 0) "dimexo" (rtos (* gap_Line 2.5) 2 0) "dimgap" (rtos gap_Line 2 0) "dimtoh" "off" "dimtih" "OFF" "DIMDLI" "0" "DIMATFIT" "3" "DIMTAD" "1" "DIMDEC" "0" "DIMJUST" "0" "DIMDSEP" "." "DIMTOFL" "1" "dimtmove" "2" "dimcen" "0" "dimclrd" "0" "dimclre" "0" "dimdle" "100" "DIMBLK" "_ARCHTICK")
      (vl-cmdf "_.DIMSTYLE" "_SAVE" dimsty "y")
      (vl-cmdf "-dimstyle" "r" dimsty)
    )
  )
)

;; 创建文字样式
(defun MakeWzys (Wzys zg zk / lst zt1 zt2 zt)
  (setq lst (list "tssdeng.shx" "hztxt.shx"))
  (if (vl-every 'findfile lst)
    (mapcar 'set '(zt1 zt2) lst)
    (setq zt (tblsearch "style" "Standard")
          zt1 (dxf 3 zt)
          zt2 (dxf 4 zt)
    )
  )
  (if (Not (Tblsearch "Style" Wzys))
    (entmake (list '(0 . "STYLE") '(100 . "AcDbSymbolTableRecord") '(100 . "AcDbTextStyleTableRecord") '(70 . 0) (cons 2 wzys) (cons 40 zg) (cons 41 zk) (cons 3 zt1) (cons 4 zt2)))
    (Setvar "textstyle" wzys)
  )
  wzys
)

;; 辅助函数
(defun Dxf (N Data) (Cdr (Assoc N Data)))
(defun Mkla (name color) (If (= (Tblsearch "layer" name) nil) (vl-cmdf "layer" "m" name "c" color name "") (vl-cmdf "layer" "t" name "s" name "")))
(defun Mkla-C (name color) (If (= (Tblsearch "layer" name) nil) (vl-cmdf "layer" "m" name "c" color name "") (vl-cmdf "layer" "t" name "s" name "c" color name "")))
(defun Mid-2pt (P1 P2 / X1 X2) (Mapcar '(Lambda (X1 X2) (/ (+ X1 X2) 2)) P1 P2))
(defun Real=>Str (real / str) (setq str (vlax-variant-value (vlax-variant-change-type (vlax-make-variant real) 8)))(cond ((and (< -1 real 0) (wcmatch str "-.*")) (setq str (strcat "-" "0" (substr str 2)))) ((and (< 0 real 1) (wcmatch str ".*")) (setq str (strcat "0" str)))(t str)))
(defun Fsxm-number->string (num / AA) (SETQ AA (vlax-variant-value (vlax-variant-change-type (vlax-make-variant num) 8)))(AA))
(defun Fsxm-Split (string strkey / po strlst xlen) (setq xlen (1+ (strlen strkey)))(while (setq po (vl-string-search strkey string))(setq strlst (cons (substr string 1 po) strlst))(setq string (substr string (+ po xlen))))(reverse (cons string strlst)))
(defun Fsxm-Join (lst str) (substr (apply 'strcat (mapcar '(lambda (a) (strcat str a)) lst)) (1+ (strlen str))))
(defun xd-rtd (j$) (/ (* j$ 180.0) pi))
(defun xd-dtr (j$) (* (/ j$ 180.0) pi))

;; 轻量级创建文字
(defun MkText (duiqi pt zg ang text zk / p1 p2 y1 y2 wzys)
  (setq wzys (MakeWzys "Tssd_Hz" 30 0.8))  ; 创建文字样式,保持30cm
  (setq duiqi (strcase duiqi nil))
  (cond
    ((= duiqi "M") (setq y1 '(72 . 4)) (setq y2 '(73 . 0))) ; 中中
    ((= duiqi "L") (setq y1 '(72 . 0)) (setq y2 '(73 . 0))) ; 左下
    ((= duiqi "C") (setq y1 '(72 . 1)) (setq y2 '(73 . 0))) ; 中下
    ((= duiqi "R") (setq y1 '(72 . 2)) (setq y2 '(73 . 0))) ; 右下
    ((= duiqi "TL") (setq y1 '(72 . 0)) (setq y2 '(73 . 3))) ; 上左
    ((= duiqi "TC") (setq y1 '(72 . 1)) (setq y2 '(73 . 3))) ; 上中
    ((= duiqi "TR") (setq y1 '(72 . 2)) (setq y2 '(73 . 3))) ; 上右
    ((= duiqi "ML") (setq y1 '(72 . 0)) (setq y2 '(73 . 2))) ; 中左
    ((= duiqi "MC") (setq y1 '(72 . 1)) (setq y2 '(73 . 2))) ; 正中
    ((= duiqi "MR") (setq y1 '(72 . 2)) (setq y2 '(73 . 2))) ; 中右
    ((= duiqi "BL") (setq y1 '(72 . 0)) (setq y2 '(73 . 1))) ; 下左
    ((= duiqi "BC") (setq y1 '(72 . 1)) (setq y2 '(73 . 1))) ; 下中
    ((= duiqi "BR") (setq y1 '(72 . 2)) (setq y2 '(73 . 1))) ; 下右
  )
  (setq ang (* pi (/ ang 180.0)))
  (entmakex
    (append
      (list '(0 . "TEXT") (cons 1 text) (cons 10 pt))
      (list (cons 11 pt) (cons 40 zg) (cons 41 zk) '(71 . 0))
      (list y1 y2 (cons 50 ang) (cons 7 wzys))
    )
  )
)

(princ "\n衡重式挡土墙绘制命令加载完成。输入 dtq 开始绘制。")
(princ)

回复

使用道具 举报

 楼主| 发表于 3 天前 | 显示全部楼层
(defun c:dtq (/ dcl-id dcl-file h-dtq b-dtq bot-dtq h1-dtq platform-width m2-dtq-top m2-dtq-bot n-dtq hj face-slope p1)
    ;; 指定 DCL 文件的绝对路径
    (setq dcl-file "D:/重要资料/插件/dtq_dcl.dcl")  ; 替换为实际路径

    ;; 检查文件是否存在
    (if (not (findfile dcl-file))
        (progn
            (alert (strcat "DCL 文件未找到!请检查路径:" dcl-file))
            (exit)
        )
    )

    ;; 加载对话框
    (setq dcl-id (load_dialog dcl-file))
    (if (not (new_dialog "dtq_dcl" dcl-id))
        (progn
            (alert "对话框加载失败!请检查 DCL 文件是否正确加载。")
            (exit)
        )
    )

    ;; 设置默认值
    (set_tile "h-dtq" "6.0")
    (set_tile "b-dtq" "0.75")
    (set_tile "bot-dtq" "2.91")
    (set_tile "h1-dtq" "2.8")
    (set_tile "platform-width" "1.0")
    (set_tile "m2-dtq-top" "0.35")
    (set_tile "m2-dtq-bot" "0.25")
    (set_tile "n-dtq" "0.1")
    (set_tile "hj" "1.0")
    (set_tile "face-slope" "0.1")

    ;; 对话框动作
    (action_tile "ok"
        "
        (setq h-dtq (atof (get_tile \"h-dtq\")))
        (setq b-dtq (atof (get_tile \"b-dtq\")))
        (setq bot-dtq (atof (get_tile \"bot-dtq\")))
        (setq h1-dtq (atof (get_tile \"h1-dtq\")))
        (setq platform-width (atof (get_tile \"platform-width\")))
        (setq m2-dtq-top (atof (get_tile \"m2-dtq-top\")))
        (setq m2-dtq-bot (atof (get_tile \"m2-dtq-bot\")))
        (setq n-dtq (atof (get_tile \"n-dtq\")))
        (setq hj (atof (get_tile \"hj\")))
        (setq face-slope (atof (get_tile \"face-slope\")))

        ;; 检查是否为数字
        (if (and (numberp h-dtq) (numberp b-dtq) (numberp bot-dtq) (numberp h1-dtq)
                 (numberp platform-width) (numberp m2-dtq-top) (numberp m2-dtq-bot)
                 (numberp n-dtq) (numberp hj) (numberp face-slope))
            (done_dialog)
            (progn
                (alert \"输入无效!请确保所有字段都输入了有效的数字。\")
                (set_tile \"h-dtq\" \"6.0\")  ; 恢复默认值
                (set_tile \"b-dtq\" \"0.75\")
                (set_tile \"bot-dtq\" \"2.91\")
                (set_tile \"h1-dtq\" \"2.8\")
                (set_tile \"platform-width\" \"1.0\")
                (set_tile \"m2-dtq-top\" \"0.35\")
                (set_tile \"m2-dtq-bot\" \"0.25\")
                (set_tile \"n-dtq\" \"0.1\")
                (set_tile \"hj\" \"1.0\")
                (set_tile \"face-slope\" \"0.1\")
            )
        )
        ")

    (action_tile "cancel" "(done_dialog)")

    ;; 显示对话框
    (start_dialog)

    ;; 获取插入点
    (setq p1 (getpoint "\n选择挡土墙左上角插入点: "))
    (if (null p1)
        (progn
            (alert "未获取到插入点!")
            (exit)
        )
    )

    ;; 打印参数值(用于调试)
    (princ "\n墙高 (h-dtq): ")(princ h-dtq)
    (princ "\n墙顶宽 (b-dtq): ")(princ b-dtq)
    (princ "\n墙底宽 (bot-dtq): ")(princ bot-dtq)
    (princ "\n一阶高度 (h1-dtq): ")(princ h1-dtq)
    (princ "\n衡重台宽度 (platform-width): ")(princ platform-width)
    (princ "\n墙背坡度上部 (m2-dtq-top): ")(princ m2-dtq-top)
    (princ "\n墙背坡度下部 (m2-dtq-bot): ")(princ m2-dtq-bot)
    (princ "\n底边坡度 (n-dtq): ")(princ n-dtq)
    (princ "\n墙趾高 (hj): ")(princ hj)
    (princ "\n面坡 (face-slope): ")(princ face-slope)
    (princ)

    ;; 绘图逻辑
    (command "_.pline" p1
             (list (+ (car p1) b-dtq) (cadr p1))  ; 右上角
             (list (+ (car p1) b-dtq) (- (cadr p1) h-dtq))  ; 右下角
             (list (car p1) (- (cadr p1) h-dtq))  ; 左下角
             p1  ; 闭合
             "c")

    ;; 清理
    (unload_dialog dcl-id)
    (princ)
)

(princ "\n衡重式挡土墙绘制命令加载完成。输入 dtq 开始绘制。")
(princ)
回复 支持 反对

使用道具 举报

 楼主| 发表于 3 天前 | 显示全部楼层
dtq_dcl : dialog {
    spacing = 10;
    label = "衡重式挡土墙参数输入";
    :row {
        :edit_box {
            label = "墙高 (m)";
            key = "h-dtq";
            value = "6.0";
            edit_limit = 10;
            edit_width = 10;
        }
    }
    :row {
        :edit_box {
            label = "墙顶宽 (m)";
            key = "b-dtq";
            value = "0.75";
            edit_limit = 10;
            edit_width = 10;
        }
    }
    :row {
        :edit_box {
            label = "墙底宽 (m)";
            key = "bot-dtq";
            value = "2.91";
            edit_limit = 10;
            edit_width = 10;
        }
    }
    :row {
        :edit_box {
            label = "一阶高度 (m)";
            key = "h1-dtq";
            value = "2.8";
            edit_limit = 10;
            edit_width = 10;
        }
    }
    :row {
        :edit_box {
            label = "衡重台宽度 (m)";
            key = "platform-width";
            value = "1.0";
            edit_limit = 10;
            edit_width = 10;
        }
    }
    :row {
        :edit_box {
            label = "墙背坡度上部 (1:m)";
            key = "m2-dtq-top";
            value = "0.35";
            edit_limit = 10;
            edit_width = 10;
        }
    }
    :row {
        :edit_box {
            label = "墙背坡度下部 (1:m)";
            key = "m2-dtq-bot";
            value = "0.25";
            edit_limit = 10;
            edit_width = 10;
        }
    }
    :row {
        :edit_box {
            label = "底边坡度 (n:1)";
            key = "n-dtq";
            value = "0.1";
            edit_limit = 10;
            edit_width = 10;
        }
    }
    :row {
        :edit_box {
            label = "墙趾高 (m)";
            key = "hj";
            value = "1.0";
            edit_limit = 10;
            edit_width = 10;
        }
    }
    :row {
        :edit_box {
            label = "面坡 (1:m)";
            key = "face-slope";
            value = "0.1";
            edit_limit = 10;
            edit_width = 10;
        }
    }
    :row {
        :button {
            label = "确定";
            key = "ok";
            is_default = true;
        }
        :button {
            label = "取消";
            key = "cancel";
            is_cancel = true;
        }
    }
}
回复 支持 反对

使用道具 举报

 楼主| 发表于 昨天 10:01 | 显示全部楼层
(defun c:dtq ()
  (vl-load-com)
  (setvar "cmdecho" 0)
  (setq os (getvar "osmode"))
  (setvar "osmode" 0)

  ;; 获取用户输入的参数
  (setq h-dtq (getreal "\n输入墙高 (m) <6.0>: ") h-dtq (if h-dtq h-dtq 6.0))
  (setq b-dtq (getreal "\n输入墙顶宽 (m) <0.75>: ") b-dtq (if b-dtq b-dtq 0.75))
  (setq h1-dtq (getreal "\n输入一阶高度 (m) <2.8>: ") h1-dtq (if h1-dtq h1-dtq 2.8))
  (setq platform-width (getreal "\n输入衡重台宽度 (m) <1.0>: ") platform-width (if platform-width platform-width 1.0))
  (setq m2-dtq-top (getreal "\n输入墙背坡度上部 (1:m) <0.35>: ") m2-dtq-top (if m2-dtq-top m2-dtq-top 0.35))
  (setq m2-dtq-bot (getreal "\n输入墙背坡度下部 (1:m) <0.25>: ") m2-dtq-bot (if m2-dtq-bot m2-dtq-bot 0.25))
  (setq n-dtq (getreal "\n输入底边坡度 (n:1) <0.1>: ") n-dtq (if n-dtq n-dtq 0.1))
  (setq bot-dtq (getreal "\n输入墙底宽 (m) <2.91>: ") bot-dtq (if bot-dtq bot-dtq 2.91))
  (setq hj (getreal "\n输入墙趾高 (m) <1.0>: ") hj (if hj hj 1.0))
  (setq face-slope (getreal "\n输入面坡 (1:m) <0.1>: ") face-slope (if face-slope face-slope 0.1))

  ;; 获取插入点
  (setq p1 (getpoint "\n拾取插入点(挡土墙左上角): "))
  (if p1
    (progn
      ;; 计算各点坐标
      (setq p2 (polar p1 0 b-dtq))  ; 墙顶右侧点
      (setq p2-yy h1-dtq)
      (setq p2-xx (* p2-yy m2-dtq-top))
      (setq p21 (list (+ (car p2) p2-xx) (- (cadr p2) p2-yy)))  ; 墙背坡度上部转折点
      (setq p22 (polar p21 0 platform-width))  ; 衡重台右侧点
      (setq p22-yy (- h-dtq h1-dtq))
      (setq p22-xx (* p22-yy m2-dtq-bot))
      (setq p3 (list (- (car p22) p22-xx) (- (cadr p22) p22-yy)))  ; 墙背坡度下部转折点
      (setq p3-xx bot-dtq)
      (setq p3-yy (* p3-xx n-dtq))
      (setq p4 (list (- (car p3) p3-xx) (+ (cadr p3) p3-yy)))  ; 墙底左侧点
      (setq p1-yy (- h-dtq hj p3-yy))
      (setq p1-xx (* p1-yy face-slope))
      (setq p6 (list (- (car p1) p1-xx) (- (cadr p1) p1-yy)))  ; 墙趾左侧点
      (setq p5 (polar p4 (* pi 0.5) hj))  ; 墙趾右侧点

      ;; 绘制挡土墙
      (command "pline" p1 p2 p21 p22 p3 p4 p5 p6 "c")

      ;; 标注坡比
      (setq str1 (strcat "1:" (rtos face-slope 2 2)))
      (setq ang (angle p6 p1))
      (setq pm (polar (mid-2pt p1 p6) (+ ang (* 0.5 pi)) 0.3))  
      (MkText "C" pm 0.25 (xd-rtd ang) str1 0.7)

      (setq str2 (strcat "1:" (rtos m2-dtq-top 2 2)))
      (setq ang (angle p2 p21))
      (setq pm (polar (mid-2pt p2 p21) (+ ang (* 0.5 pi)) 0.3))  
      (MkText "C" pm 0.25 (xd-rtd ang) str2 0.7)

      (setq str3 (strcat "1:" (rtos m2-dtq-bot 2 2)))
      (setq ang (angle p22 p3))
      (setq pm (polar (mid-2pt p22 p3) (+ ang (* 0.5 pi)) 0.3))  
      (MkText "C" pm 0.25 (xd-rtd ang) str3 0.7)

      (setq str4 (strcat (rtos n-dtq 2 2) ":1"))
      (setq ang (angle p4 p3))
      (setq pm (polar (mid-2pt p3 p4) (+ ang (* 0.5 pi)) 0.3))  
      (MkText "C" pm 0.25 (xd-rtd ang) str4 0.7)
    )
  )

  ;; 恢复 OS 模式
  (setvar "osmode" os)
  (princ)
)

;; 辅助函数
(defun Mid-2pt (P1 P2 / X1 X2) (Mapcar '(Lambda (X1 X2) (/ (+ X1 X2) 2)) P1 P2))
(defun xd-rtd (j$) (/ (* j$ 180.0) pi))

;; 轻量级创建文字
(defun MkText (duiqi pt zg ang text zk / p1 p2 y1 y2 wzys)
  (setq wzys (MakeWzys "Tssd_Hz" 30 0.8))  
  (setq duiqi (strcase duiqi nil))
  (cond
    ((= duiqi "M") (setq y1 '(72 . 4)) (setq y2 '(73 . 0))) ; 中中
    ((= duiqi "C") (setq y1 '(72 . 1)) (setq y2 '(73 . 0))) ; 中下
  )
  (setq ang (* pi (/ ang 180.0)))
  (entmakex
    (append
      (list '(0 . "TEXT") (cons 1 text) (cons 10 pt))
      (list (cons 11 pt) (cons 40 zg) (cons 41 zk) '(71 . 0))
      (list y1 y2 (cons 50 ang) (cons 7 wzys))
    )
  )
)

;; 创建文字样式
(defun MakeWzys (Wzys zg zk / lst zt1 zt2 zt)
  (setq lst (list "tssdeng.shx" "hztxt.shx"))
  (if (vl-every 'findfile lst)
    (mapcar 'set '(zt1 zt2) lst)
    (setq zt (tblsearch "style" "Standard")
          zt1 (dxf 3 zt)
          zt2 (dxf 4 zt)
    )
  )
  (if (Not (Tblsearch "Style" Wzys))
    (entmake (list '(0 . "STYLE") '(100 . "AcDbSymbolTableRecord") '(100 . "AcDbTextStyleTableRecord") '(70 . 0) (cons 2 wzys) (cons 40 zg) (cons 41 zk) (cons 3 zt1) (cons 4 zt2)))
    (Setvar "textstyle" wzys)
  )
  wzys
)

(princ "\n衡重式挡土墙绘制命令加载完成。输入 dtq 开始绘制。")
(princ)
回复 支持 反对

使用道具 举报

发表于 5 天前 | 显示全部楼层
收藏看看,感谢无私奉献
回复 支持 反对

使用道具 举报

发表于 5 天前 | 显示全部楼层
想标注P2到P22、P22到P3的从垂直尺寸
      (Vl-Cmdf "_Dimlinear" p2 p22 (Polar p22 (* 0.5 pi) 80)) ;
      (Vl-Cmdf "_Dimlinear" p22 p3 (Polar p22 (* 0.5 pi) 80)) ;
改了后,一个是水平的,一个垂直的(尺寸还在P22点上),代码改的不对么?
回复 支持 反对

使用道具 举报

发表于 5 天前 来自手机 | 显示全部楼层
原帖可以画仰斜,俯斜,直立,衡重,悬臂。在openDCl环境下还能显示图片,不知道你升级了哪些内容?
回复 支持 反对

使用道具 举报

 楼主| 发表于 5 天前 | 显示全部楼层
标注是有问题的,就画图可以了
回复 支持 反对

使用道具 举报

发表于 3 天前 | 显示全部楼层
要设置这么多参数,没界面不优雅,要一直空格。
回复 支持 反对

使用道具 举报

 楼主| 发表于 3 天前 | 显示全部楼层
jun470 发表于 2025-1-20 09:56
要设置这么多参数,没界面不优雅,要一直空格。

你帮忙设置一下嘛
回复 支持 反对

使用道具 举报

 楼主| 发表于 3 天前 | 显示全部楼层
对话框能出来,图形画不出来

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-1-23 02:14 , Processed in 0.172386 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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