明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 221|回复: 6

[经验] SLdesign V3.0 线筋钩饰

[复制链接]
发表于 昨天 09:12 | 显示全部楼层 |阅读模式
本帖最后由 尘缘一生 于 2025-5-5 09:47 编辑

演示三领的《线筋钩饰》部分,
应用户要求,开发集成
三领的永久免费下载地址
通过网盘分享的文件:三领设计
链接: https://pan.baidu.com/s/1W27dmj4uU2ALNeEOUtMbPA?pwd=8v21 提取码: 8v21
  1. ;;SLdesign V3.0 三领设计 V3.0集成代码
  2. ;;Modify by 尘缘一生 QQ:15290049
  3. ;;注:代码不能独立运行,需三领环境支持;仅展示原理思路,三领环境下:支持简繁英各版本CAD与浩辰
  4. ;;两点拉筋函数-----(一级)------
  5. (defun sl:dd-lj (pa pb / d ang p1 p2 p3 p4 p5 p6 s1)
  6.   (setq s1 (slmsg "钢筋" "葵惮" "steelbar") $stj (gjjb) d (* 0.45 slbl) ang (angle pa pb))
  7.   (if (= $stj "%%130") ;根据级别,画不同弯钩
  8.     (progn
  9.       (setq pa (polar pa ang (* 0.2 d))
  10.         pb (polar pb (angle pb pa) (* 0.2 d))
  11.         p1 (polar pa (- ang 0.436332) (* 4. d))
  12.         p2 (polar pa (+ ang 3pi2) (* 1.7 d))
  13.         p3 (polar pa (+ ang pi2) (* 1.7 d))
  14.         p4 (polar pb (+ ang pi2) (* 1.7 d))
  15.         p5 (polar pb (+ ang 3pi2) (* 1.7 d))
  16.         p6 (polar pb (- ang 2.70526) (* 4. d))
  17.       )
  18.       (entmake
  19.         (list
  20.           (cons 0 "LWPOLYLINE") (cons 100 "AcDbEntity")
  21.           (cons 8 s1)
  22.           (cons 62 1) (cons 100 "AcDbPolyline")
  23.           (cons 90 6)
  24.           (cons 70 0)
  25.           (cons 10 p1) (cons 40 d) (cons 41 d)
  26.           (cons 10 p2) (cons 40 d) (cons 41 d) (cons 42 -0.97)
  27.           (cons 10 p3) (cons 40 d) (cons 41 d)
  28.           (cons 10 p4) (cons 40 d) (cons 41 d) (cons 42 -0.97)
  29.           (cons 10 p5) (cons 40 d) (cons 41 d)
  30.           (cons 10 p6) (cons 40 d) (cons 41 d)
  31.         )
  32.       )
  33.     )
  34.     (progn
  35.       (setq pa (polar pa (angle pb pa) (* 1.4 d))
  36.         pb (polar pb ang (* 1.4 d))
  37.         pa (polar pa (+ ang pi2) (* slbl 0.6))
  38.         pb (polar pb (+ ang pi2) (* slbl 0.6))
  39.       )
  40.       (setq p1 (polar pa (- ang pi2) (* slbl 1.1)))
  41.       (setq p2 (polar p1 (- ang pi4) (* slbl 3.0)))
  42.       (setq p3 (polar pb (- ang pi2) (* slbl 1.1)))
  43.       (setq p4 (polar p3 (- ang 3pi4) (* slbl 3.0)))
  44.       (entmake
  45.         (list
  46.           (cons 0 "LWPOLYLINE") (cons 100 "AcDbEntity") (cons 100 "AcDbPolyline") (cons 8 s1)
  47.           (cons 90 6) (cons 10 p2) (cons 43 d) (cons 10 p1) (cons 10 pa) (cons 10 pb) (cons 10 p3) (cons 10 p4)
  48.         )
  49.       )
  50.     )
  51.   )
  52. )
  53. ;;两点画钢筋+p1端钩饰-----(一级)------
  54. ;;k t 左端钩 nil 右端钩
  55. (defun sl:2pgjp1 (p1 p2 k / s1 p3 p4 p5)
  56.   (setq s1 (slmsg "钢筋" "葵惮" "steelbar") $stj (gjjb) d (* 0.45 slbl) ang (angle p1 p2))
  57.   (if (= $stj "%%130")
  58.     (progn ;左端圆钩
  59.       (setq
  60.         p3 (polar p1 (if k (+ ang pi4) (- ang pi4)) (* 4. d))
  61.         p4 (polar p3 (+ ang pi) (* 2.5 d))
  62.       )
  63.       (entmake
  64.         (list
  65.           (cons 0 "LWPOLYLINE") (cons 100 "AcDbEntity")
  66.           (cons 8 s1)
  67.           (cons 100 "AcDbPolyline")
  68.           (cons 90 4)
  69.           (cons 70 0)
  70.           (cons 10 p3) (cons 40 d) (cons 41 d)
  71.           (cons 10 p4) (cons 40 d) (cons 41 d) (if k (cons 42 1.0) (cons 42 -1.0))
  72.           (cons 10 p1) (cons 40 d) (cons 41 d)
  73.           (cons 10 p2) (cons 40 d) (cons 41 d)
  74.         )
  75.       )
  76.     )
  77.     (progn ;左端斜钩
  78.       (setq p3 (polar p1 (if k (+ ang pi2) (- ang pi2)) (* slbl 1.1)))
  79.       (setq p5 (polar p3 ang (* slbl 1.1)))
  80.       (entmake
  81.         (list
  82.           (cons 0 "LWPOLYLINE") (cons 100 "AcDbEntity") (cons 100 "AcDbPolyline") (cons 8 s1)
  83.           (cons 90 3) (cons 10 p5) (cons 43 d) (cons 10 p1) (cons 10 p2)
  84.         )
  85.       )
  86.     )
  87.   )
  88.   (entlast)
  89. )
  90. ;线转钢筋带弯钩key型----
  91. (defun sl:xjhz (enam key / plis p1 p2 p3 p4 ang)
  92.   (setq plis (sl:pick2pt enam (cadr (grread 5)))
  93.     p1 (car plis) p2 (cadr plis) ang (angle p1 p2)
  94.   )
  95.   (entdel enam)
  96.   (cond
  97.     ((= key (slmsg "斜弯1" "弊筥1" "Diagonal Hook1")) ;左端
  98.       (sl:2pgjp1 p1 p2 t)
  99.     )
  100.     ((= key (slmsg "斜弯2" "弊筥2" "Diagonal Hook2")) ;右端
  101.       (sl:2pgjp1 p2 p1 nil)
  102.     )
  103.     ((= key (slmsg "斜弯3" "弊筥3" "Diagonal Hook3")) ;两端
  104.       (sl:dd-lj p1 p2)
  105.     )
  106.     ((= key (slmsg "直弯" "舠" "Straight bend"))
  107.       (setq p3 (polar p1 (- ang pi2) (+ slbl slbl)))
  108.       (setq p4 (polar p2 (- ang pi2) (+ slbl slbl)))
  109.       (entmake
  110.         (list
  111.           (cons 0 "LWPOLYLINE") (cons 100 "AcDbEntity") (cons 100 "AcDbPolyline") (cons 8 (slmsg "钢筋" "葵惮" "steelbar"))
  112.           (cons 90 4) (cons 10 p3) (cons 43 (* 0.45 slbl)) (cons 10 p1) (cons 10 p2) (cons 10 p4)
  113.         )
  114.       )
  115.     )
  116.   )
  117. )
  118. ;;Table 循环开关(公共函数)----(一级)-----   
  119. ;;lis (("k1 msg1") ("k2 msg2")....) 开关列表
  120. ;;ss 选择集 nil  fun 执行函数,ss=nil fun不执行
  121. ;;返回 (list k ms) k开关字符 ms 信息
  122. (defun sl:tabkey (lis ss fun / k ms n i return lisk str str1 elis)
  123.   (defun sl:mkelis (elis k / nam nam1 elis1)
  124.     (if (and elis (> (length elis) 0))
  125.       (while (setq nam (car elis))
  126.         (apply fun (list nam k))
  127.         (setq nam1 (entlast))
  128.         (if (eq nam1 nam)
  129.           (setq elis1 (cons nam elis1))
  130.           (setq elis1 (cons nam1 elis1))
  131.         )
  132.         (setq elis (cdr elis))
  133.       )
  134.     )
  135.     elis1
  136.   )
  137.   ;;---------------------
  138.   (setq k (caar lis) ms (cadar lis) i (1- (length lis)) n 0 return (list k msg)
  139.     str (slmsg "\n->[循环切换开关(TAB)])<当前:" "\n->[碻吏ち传秨闽(TAB)])<讽玡:" "\n->[Loop switch(TAB)])<Current:")
  140.     str1 (slmsg "(其余键>退出)" "(ㄤ龄>癶)" "(Other keys>Exit)")
  141.     loop t
  142.   )
  143.   (princ (strcat str k "!!" ms ">" str1))
  144.   (if (and ss (> (sslength ss) 0)) (setq elis (sl:mkelis (ss-enlst ss) k)))
  145.   (while loop
  146.     (setq bb (grread t 15 2))
  147.     (cond
  148.       ((member bb '((2 9))) ;;table 键
  149.         (if (> (setq n (1+ n)) i) (setq n 0))
  150.         (setq lisk (nth n lis) k (car lisk) ms (cadr lisk) return (list k ms))
  151.         (princ (strcat str k "!!" ms ">" str1))
  152.         (if elis (setq elis (sl:mkelis elis k)))
  153.       )
  154.       ((or (= (car bb) 3) ;;左键
  155.          (member (car bb) '(11 25)) ;右键
  156.          (member bb '((2 32))) ;空格键
  157.          (member bb '((2 13))) ;;回车
  158.        )   
  159.         (setq loop nil)
  160.       )
  161.     )
  162.   )
  163.   return
  164. )
  165. ;;线筋钩饰---
  166. (defun c:xjhz (/ sel)
  167.   (if (setq sel (entsel (slmsg "请选择钢筋线段:" "叫匡拒葵惮絬琿:" "Please select a steel bar segment:")))
  168.     (sl:tabkey (list
  169.                  (list (slmsg "斜弯1" "弊筥1" "Diagonal Hook1") (slmsg "左端" "オ狠" "Left end"))
  170.                  (list (slmsg "斜弯2" "弊筥2" "Diagonal Hook2") (slmsg "右端" "狠" "Right end"))
  171.                  (list (slmsg "斜弯3" "弊筥3" "Diagonal Hook3") (slmsg "两端" "ㄢ狠" "Both ends"))
  172.                  (list (slmsg "直弯" "舠" "Straight bend") (slmsg "直钩" "筥" "Straight hook"))
  173.                )
  174.       (ssadd (car sel))
  175.       'sl:xjhz
  176.     )
  177.   )
  178. )





本帖子中包含更多资源

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

x

点评

中文怎么会有乱码?  发表于 昨天 09:48
"觉得好,就打赏"
还没有人打赏,支持一下
回复

使用道具 举报

发表于 昨天 09:14 | 显示全部楼层
真吉尔好用,强烈推荐
回复 支持 反对

使用道具 举报

发表于 昨天 09:47 | 显示全部楼层
非结构大佬钢筋钩可不敢瞎改
回复 支持 反对

使用道具 举报

 楼主| 发表于 昨天 16:54 | 显示全部楼层
xyp1964 发表于 2025-5-5 09:47
非结构大佬钢筋钩可不敢瞎改

哪部分不是乱码,是港台地区的BIG5码,程序在港台地区CAD安装,程序会自动判定。
  1. ;;简体、繁体、英文提示---(一级)-----
  2. ;;msg1 简体字 nil  msg2 繁体字 nil msg3 英文 nil--
  3. (defun slmsg (msg1 msg2 msg3 / msg)
  4.   (cond
  5.     ((= $Lgver 1)
  6.       (setq msg msg1)
  7.     )
  8.     ((= $Lgver 2) ;繁体版
  9.       (setq msg msg2)
  10.     )
  11.     ((= $Lgver 3)
  12.       (setq msg msg3)
  13.     )
  14.   )
  15.   msg ;;输出信息
  16. )
  17. ;;!!!!!!!!!!!!!!!!0000级加载!!!!!!!!!!!!!!!!!!
  18. ;;(vla-put-displayscrollbars (vla-get-display (vla-get-preferences *Acad*)) 0) ;_关闭滚动条,浩辰测试错误
  19. (if (null vlax-dump-object) (vl-load-com));;将 Visual LISP 扩展功能加载到 AutoLISP
  20. ;;常量定义
  21. (setq *Acad* (vlax-get-acad-object)
  22.   *AcDocument* (vla-get-activedocument *Acad*)
  23.   *Model-Space* (vla-get-modelspace *AcDocument*)
  24.   *Paper-Space* (vla-get-PaperSpace *AcDocument*)
  25.   *BLKS* (vla-get-Blocks *AcDocument*)
  26.   *LAYS* (vla-get-Layers *AcDocument*)
  27.   *ACLYS*  (vla-get-activeLayer *AcDocument*)
  28.   *LTS*  (vla-get-Linetypes *AcDocument*)
  29.   *GRPS* (vla-get-groups *AcDocument*)
  30.   pi2     (* pi 0.5)
  31.   pi4     (* pi 0.25)
  32.   3pi4   (* 0.75 pi)
  33.   2pi     (+ pi pi)
  34.   3pi2   (+ 3pi4 3pi4)  ;; (* 1.5 pi)
  35.   5pi4   (+ pi pi4)  ;;(* 1.25 pi)
  36.   7pi4   (+ 3pi2 pi4) ;;(* 1.75 pi)
  37. )
  38. ;;-------
  39. (defun sl0000 (/ kk kk1 k0 k1 k2 k3 s str path1)
  40.   ;;(xlr-autolayer)防止天正崩溃(舍弃自动图层)
  41.   (setq kk1 (getvar "SYSCODEPAGE")) ;显示所在地区的代码
  42.   (cond
  43.     ((= kk1 (strcase "ansi_936"))   ;;CAD是简体版
  44.       (setq $Lgver 1 $hz "hz" $xz "xz" k0 "bz" str "简体中文"
  45.         $okbt ":button {label="确定";key="accept";is_default=true;}"
  46.         $canbt ":button {label="取消"; key="cancel";is_cancel=true;}"
  47.       )
  48.     )
  49.     ((= kk1 (strcase "ansi_950")) ;繁体版
  50.       (setq $Lgver 2 $hz "fan" $xz "fank" k0 "ft" str "羉砰いゅ"
  51.         $okbt ":button {label="絋﹚";key="accept";is_default=true;}"
  52.         $canbt ":button {label=""; key="cancel";is_cancel=true;}"
  53.       )
  54.     )
  55.     ((and (/= kk1 (strcase "ansi_936")) (/= kk1 (strcase "ansi_950"))) ;;英文或其他版
  56.       (setq $Lgver 3 $hz "hz" $xz "xz" k0 "en" str "Englishversion"
  57.         $okbt ":button {label="Accept";key="accept";is_default=true;}"
  58.         $canbt ":button {label="Cancel"; key="cancel";is_cancel=true;}"
  59.       )
  60.     )
  61.   )
  62.   (setq
  63.     $row ":cluster {horizontal_margin=none; vertical_margin=none; children_alignment=centered;"
  64.     $column ":cluster {layout=vertical;horizontal_margin=none;vertical_margin=none;"
  65.     $boxed_row ":cluster {boxed=true;children_alignment=centered;"
  66.     $boxed_column ":cluster {layout=vertical;boxed=true;"
  67.     $radio_row ":radio_cluster {horizontal_margin=none;vertical_margin=none;children_alignment=centered;"
  68.     $radio_column ":radio_cluster {layout=vertical;horizontal_margin=none;vertical_margin=none;"
  69.     $boxed_radio_row ":radio_cluster {boxed=true;children_alignment=centered;"
  70.     $boxed_radio_column ":radio_cluster {layout=vertical;boxed=true;"
  71.   )
  72.   (if (setq sl-path0 (sl-lujing))
  73.     (progn
  74.       (sl:del-path-temp (strcat sl-path0 "\" "Support" "\") '("*.bak" "*.dwl" "*.dwl2" "*.sv$" "*.log"))
  75.       (sl:del-path-temp (strcat sl-path0 "\" "Fonts" "\") '("*.bak" "*.dwl" "*.dwl2" "*.sv$" "*.log"))
  76.       (sl:del-path-temp (strcat sl-path0 "\") '("*.bak" "*.dwl" "*.dwl2" "*.sv$" "*.log"))
  77.       (setq kk (strcat sl-path0 "\" "main.ini") k3 (slmsg "版本" "セ" "version"))
  78.       (vl-catch-all-apply '(lambda () (writsetup))) ;;自启动系统
  79.       (vl-catch-all-apply '(lambda () (slcsh0))) ;变量设置1
  80.       (vl-catch-all-apply '(lambda () (slcsh)))  ;;变量设置2
  81.       (setq k1 (strcat sl-path0 "\" "Support" "\" k0) k2 (strcat sl-path0 "\") s (readkey kk k3))
  82.       (if (or (/= s str) (= s nil))
  83.         (progn
  84.           (slfilcopy "base.dcl" k1 k2)
  85.           (slfilcopy "acad.dcl" k1 k2)
  86.           (slfilcopy "acad.pat" k1 k2)
  87.           (slfilcopy "acadiso.pat" k1 k2)
  88.           (rwritekey kk k3 str)
  89.         )
  90.       )
  91.       (if (= kk1 (strcase "ansi_936")) ;;CAD是简体版
  92.         (progn
  93.           (setq path1 (strcat (slpath (car (str->lst (getenv "ACAD") ";"))) "\")) ;;;取第一个支持路径,后面要带\\
  94.           (slfilcopy "txt.shx" (strcat sl-path0 "\" "Fonts") path1)
  95.         )
  96.       )
  97.       (setq
  98.         k1 (slmsg "下拉MENU" "┰MENU" "downMENU")
  99.         k2 (slmsg "专业" "盡穨" "major")
  100.         k3 (slmsg "图标菜单" "瓜夹垫虫" "IconMenu")
  101.       )
  102.       (if (= (readkey kk k1) nil)
  103.         (rwritekey kk k1 (slmsg "展开" "甶秨" "open"))
  104.       )
  105.       (if (= (readkey kk k2) nil)
  106.         (rwritekey kk k2 (slmsg "建筑" "縱" "Architecture"))
  107.       )
  108.       (if (= (readkey kk k3) nil)
  109.         (rwritekey kk k3 (slmsg "开" "秨" "open"))
  110.       )
  111.       (vl-catch-all-apply '(lambda () (menu00))) ;;菜单系统  
  112.       (setq k1 (readkey kk k3) k2 (slmsg "三领" "烩" "SLdesign") k3 (slmsg "扑捉" "汲" "Osnap"))
  113.       (cond
  114.         ((= k1 nil)
  115.           (rwritekey kk k3 k2)
  116.           (osnapoff)
  117.         )
  118.         ((= k1 (slmsg "永驻" "ッ緉" "AlwaysON"))
  119.           (osnapon)
  120.         )
  121.         ((= k1 k2)
  122.           (osnapoff)
  123.         )
  124.       )
  125.       (setq k1 (readkey kk k2) k2 (slmsg "空白出面板" "フ狾" "Blank-panel") k3 (slmsg "开" "秨" "Open"))
  126.       (cond
  127.         (if (= k1 nil)
  128.           (rwritekey kk k2 K3)
  129.           (slmbon)
  130.         )
  131.         (if (= k1 k3)
  132.           (slmbon)
  133.         )
  134.         (if (= k1 (slmsg "关" "闽" "Close"))
  135.           (slmboff)
  136.         )
  137.       )
  138.       (vl-catch-all-apply '(lambda () (load (strcat sl-path0 "\" "Support" "\" "slsystem.VLX")))) ;三领程序集
  139.       (vl-catch-all-apply '(lambda () (yhstartcx))) ;;加载用户目录下程序
  140.     )
  141.   )
  142. )
  143. (sl0000)
总启动部分


回复 支持 反对

使用道具 举报

发表于 昨天 21:46 | 显示全部楼层
尘缘一生 发表于 2025-5-5 16:54
哪部分不是乱码,是港台地区的BIG5码,程序在港台地区CAD安装,程序会自动判定。
总启动部分

(setq k1 (readkey kk k2) k2 (slmsg "空白出面板" "フ狾" "Blank-panel") k3 (slmsg "开" "秨" "Open"))
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-6 11:09 , Processed in 0.178307 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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