明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: xyp1964

[讨论] 【e派】工具箱函数再揭秘及应用实例

    [复制链接]
 楼主| 发表于 2017-8-4 23:37:22 | 显示全部楼层
本帖最后由 xyp1964 于 2017-11-20 21:42 编辑

  1. ;; ykhz(腰孔绘制)
  2. (defun c:ykhz (/ ilst ll1 ll2)
  3.   (xyp-Start)
  4.   (defun main-pro (/ w1 p0 s0 p1 p2 p3 p4 dl1 dl2 w2 l0 pa)
  5.     (setq l0 (if (= bo0 "1")
  6.                (- leng wide)
  7.                leng
  8.              )
  9.           w1 (* wide 0.5)
  10.           w2 (- w1)
  11.           l1 (* l0 0.5)
  12.     )
  13.     (while (setq p0 (getpoint "\n中心基点<退出>: "))
  14.       (xyp-Group0)
  15.       (xyp-MkLaCo "腰孔" 4)
  16.       (setq s0 (entlast)
  17.             p1 (xyp-Pt2XY p0 (* l1 -1) w2)
  18.             p2 (xyp-Pt2XY p0 l1 w2)
  19.             p3 (xyp-Pt2XY p0 l1 w1)
  20.             p4 (xyp-Pt2XY p0 (* l1 -1) w1)
  21.       )
  22.       (xyp-line p1 p2)
  23.       (xyp-line p3 p4)
  24.       (xyp-Arc-3pt p3 (xyp-Mid2PtUp p3 p2 w1) p2)
  25.       (xyp-Arc-3pt p1 (xyp-Mid2PtUp p1 p4 w1) p4)
  26.       (xyp-PeditJoin (xyp-SSelEntnext s0) 0)
  27.       (if (= bo1 "1")
  28.         (progn
  29.           (xyp-MkLaCo "轴线" 1)
  30.           (setq        dl1 (+ (* (+ l0 wide) 0.5) ll)
  31.                 dl2 (+ w1 ll)
  32.           )
  33.           (xyp-line (xyp-Pt2X p0 (- dl1)) (xyp-Pt2X p0 dl1))
  34.           (xyp-line (xyp-Pt2Y p0 (- dl2)) (xyp-Pt2Y p0 dl2))
  35.           (xyp-line (xyp-Pt2XY p0 (* l1 -1) (* w2 0.5))
  36.                     (xyp-Pt2XY p0 (* l1 -1) (* w1 0.5))
  37.           )
  38.           (xyp-line (xyp-Pt2XY p0 l1 (* w2 0.5))
  39.                     (xyp-Pt2XY p0 l1 (* w1 0.5))
  40.           )
  41.         )
  42.       )
  43.       (cond ((= k3 "1")
  44.              (xyp-MkLaCo "Dim" 3)
  45.              (xyp-dim-hor
  46.                (xyp-Pt2X p4 w2)
  47.                (xyp-Pt2X p3 w1)
  48.                (xyp-Pt2Y p4 600)
  49.              )
  50.              (xyp-dim-Ver p1 p4 (xyp-Pt2X p1 (- (+ 600 w1))))
  51.             )
  52.             ((= k2 "1")
  53.              (xyp-MkLaCo "Dim" 3)
  54.              (setq pa (xyp-Pt2Y p4 600))
  55.              (xyp-dim-hor p4 p3 pa)
  56.              (xyp-dim-Ver p1 p4 (xyp-Pt2X p1 (- (+ 600 w1))))
  57.             )
  58.       )
  59.       (if (/= ang 0)
  60.         (xyp-rotate (xyp-SSelEntnext s0) P0 ang)
  61.       )
  62.       (xyp-Group1)
  63.     )
  64.   )
  65.   (defun abo1 ()
  66.     (xyp-Dcl-Gettile '("bo1"))
  67.     (cond ((= bo1 "1")
  68.            (mode_tile "ll" 0)
  69.            (xyp-Show-Sld "k0" "xyp(yaokong02)")
  70.           )
  71.           ((= bo1 "0")
  72.            (mode_tile "ll" 1)
  73.            (xyp-Show-Sld "k0" "xyp(yaokong01)")
  74.           )
  75.     )
  76.   )
  77.   (setq        ll1 '(leng wide ang bo1 ll k1 k2 k3 bo0)
  78.         ll2 '(1000. 500. 0. "0" 200. "1" "0" "0" "0")
  79.   )
  80.   (defun ajbcs () (xyp-Multiple-Settile ll1 ll2))
  81.   (xyp-initSet ll1 ll2)
  82.   (setq        ilst '(("k0" "" "imagebutton" "-2" "30" "xyp(yaokong01)" "(princ)")
  83.                "spacer;"
  84.                ("" "参数" ":boxed_column{")
  85.                ("leng" "腰孔长度" "real" "8")
  86.                ("wide" "腰孔宽度" "real" "8")
  87.                ("ang" "旋转角度" "real" "8")
  88.                "spacer;"
  89.                ("bo0" "腰孔长度 = 外廓" "bool")
  90.                "spacer;"
  91.                "}"
  92.                ("" "其它" ":boxed_column{")
  93.                ":row{"
  94.                ("bo1" "轴线出头" "bool" "(abo1)")
  95.                ("ll" "" "real" "8")
  96.                "}"
  97.                "spacer;"
  98.                "}"
  99.                ("" "尺寸标注" ":boxed_radio_row{")
  100.                ("k1" "无" "radio")
  101.                ("k2" "圆心" "radio")
  102.                ("k3" "外廓" "radio")
  103.                "}"
  104.                ("jbcs" "缺省参数" "button1" "(ajbcs)")
  105.                ("" "" "user" "(abo1)")
  106.               )
  107.   )
  108.   (if (= (xyp-Dcl-Init Ilst "【腰孔绘制】V17.8.3" t) 1) ;V11.10.13
  109.     (main-pro)
  110.   )
  111.   (xyp-End)
  112. )

本帖子中包含更多资源

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

x
发表于 2017-9-7 13:32:41 | 显示全部楼层
高科技 mark一下
发表于 2017-11-1 22:38:00 | 显示全部楼层
请院长提供一下,这些函数:xyp-MkLaCo  xyp-Offset  xyp-Vertexs  xyp-SSelEntnext
发表于 2017-11-9 12:02:45 | 显示全部楼层
新来的 看到这个牛贴  好多函数源码
发表于 2017-11-20 09:59:20 | 显示全部楼层

请院长提供一下 xyp-count1

点评

不提供核心函数  发表于 2017-11-20 21:40
 楼主| 发表于 2017-11-20 21:41:38 | 显示全部楼层
  1. ;; dxby(单线百叶)
  2. (defun c:dxby (/ Dlst ll1 ll2)
  3.   (xyp-Start)
  4.   (defun main-pro (/ i ss s1 p1 p3 p7 th nn dd s1)
  5.     (xyp-MkLaCo "普通方窗" 4)
  6.     (princ "\n选择矩形窗外框: ")
  7.     (setq i -1)
  8.     (if        (setq ss (ssget '((0 . "*polyline") (90 . 4) (70 . 1))))
  9.       (while (setq s1 (ssname ss (setq i (1+ i))))
  10.         (xyp-Group0)
  11.         (xyp-Offset s1 k-jk nil t nil)
  12.         (setq p1 (xyp-9pt s1 1)
  13.               p3 (xyp-9pt s1 3)
  14.               p7 (xyp-9pt s1 7)
  15.               th (- (distance p1 p7) (* k-jk 2))
  16.               nn
  17.                  (fix (/ th k-vw))
  18.               dd (/ th nn 1.)
  19.               s1 (xyp-line (xyp-Pt2XY p1 k-jk (+ k-jk dd))
  20.                            (xyp-Pt2XY p3 (- k-jk) (+ k-jk dd))
  21.                  )
  22.         )
  23.         (xyp-ArrayRV s1 (1- nn) dd)
  24.         (xyp-Group1)
  25.       )
  26.     )
  27.   )
  28.   (xyp-initSet '(k-jk k-vw) '(100. 50.))
  29.   (setq        Dlst '(("k0" "" "ib" "-2" "48" "xyp(ptfc01)" "(princ)")
  30.                ("" "参数" ":boxed_column{")
  31.                ("k-jk" "筋 宽" "real" "8")
  32.                ("k-vw" "纵向宽度" "real" "8")
  33.                "spacer;"
  34.                "}"
  35.                "ioc"
  36.               )
  37.   )
  38.   (if (= (xyp-Dcl-Init Dlst "【单线百叶】V17.8.23" t) 1)
  39.     (main-pro)
  40.   )
  41.   (xyp-End)
  42. )
发表于 2017-12-1 09:39:38 | 显示全部楼层
院长,在别的帖子看到你发这个,新人非常想看看源码学习学习!
;; ep-sjxz(神经选择)
发表于 2017-12-2 16:08:23 | 显示全部楼层
支持院长,支持源码
 楼主| 发表于 2017-12-31 17:44:25 | 显示全部楼层
  1. ;; 表按子表第n位归类 (Count-Nth lst表 n位置)
  2. ;; (setq lst1 (Count-Nth lst 0)) 第一位为0
  3. (defun Count-Nth (lst n / a lst1 tmp x)
  4.   (while lst
  5.     (setq a    (car lst)
  6.           lst  (cdr lst)
  7.           lst1 (vl-remove-if-not '(lambda (x) (equal (nth n x) (nth n a))) lst) ;相同
  8.           lst  (vl-remove-if '(lambda (x) (equal (nth n x) (nth n a))) lst) ;不同
  9.           tmp  (cons (cons a lst1) tmp)
  10.     )
  11.   )
  12.   tmp
  13. )
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-16 10:32 , Processed in 0.180899 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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