明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: xyp1964

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

    [复制链接]
发表于 2012-7-21 07:53:38 | 显示全部楼层
感谢 xyp1964 版主分享函数!
发表于 2012-7-21 08:01:28 来自手机 | 显示全部楼层
支持院长。
发表于 2012-7-21 08:08:38 | 显示全部楼层
连院长都打算开源了,别人的代码还有捂着的必要吗

点评

自定义函数xyp-SubUpd早就发布了,这次发布的是扩展版  发表于 2012-7-21 12:53
说明院长的代码好,还说明院长平时捂的严  发表于 2012-7-21 09:09
发表于 2012-7-21 08:08:40 | 显示全部楼层
学习了,
发表于 2012-7-21 08:28:45 | 显示全部楼层
支持院长,支持源码
发表于 2012-7-21 08:38:19 | 显示全部楼层
very good!
LISP open-source moment.
发表于 2012-7-21 08:38:47 | 显示全部楼层
强烈支持院长!
发表于 2012-7-21 09:08:44 | 显示全部楼层
院长的源码,来学习
 楼主| 发表于 2012-7-21 09:12:54 | 显示全部楼层
本帖最后由 xyp1964 于 2020-11-19 23:30 编辑

;; 先来个伪源码的看看效果
  1. ;; zttc(总图停车)
  2. (defun c:zttc (/ ilst ll1 ll2)
  3.   (cmdla0)
  4.   (defun main-pro (/ ss i s1 an w l ss dl dw i num ptn ptn1 ptn2 pt s2 n1 tx)
  5.     (princ "\n选择曲线: ")
  6.     (if (< ang 45)
  7.       (setq an 90
  8.      w  (+ leng 0.5)
  9.      l  (- wide 1)
  10.       )
  11.       (setq an ang
  12.      w  wide
  13.      l  leng
  14.       )
  15.     )
  16.     (setq ss  (ssget '((0 . "*LINE,ARC,CIRCLE,ELLIPSE")))
  17.    dl  (+ l (* w (xyp-TAN (xyp-d2r (- 90 an)))))
  18.    dw  (/ w (sin (xyp-d2r an)))
  19.    i   -1
  20.    num 0
  21.     )
  22.     (while (setq s1 (ssname ss (setq i (1+ i))))
  23.       (xyp-Group0)
  24.       (setq ptn (xyp-CurveDivDistBetweenPtn s1 dw))
  25.       (foreach ptn1 ptn
  26. (xyp-MkLaCo "总图停车" 8)
  27. (foreach pt ptn1
  28.    (setq s2 (xyp-Faxian s1 pt dl))
  29.    (xyp-rotate s2 pt (- an 90))
  30. )
  31. (if (= bo1 "1")
  32.    (progn
  33.      (xyp-MkLaCo "总图停车数量" 4)
  34.      (setq pt  (xyp-Get-RightPoint (car ptn1) (last ptn1) (* l 0.5))
  35.     n1  (- (length ptn1) 1)
  36.     num (+ n1 num)
  37.     tx  (itoa n1)
  38.     s2  (xyp-Text 5 pt tx)
  39.      )
  40.    )
  41. )
  42.       )
  43.       (xyp-Group1)
  44.     )
  45.     (if (= bo1 "1")
  46.       (progn
  47. (xyp-Text 5 '(0 0) (strcat "停车数量 = " (itoa num)))
  48. (xyp-GrreadMove (entlast) '(0 0))
  49.       )
  50.     )
  51.   )
  52.   (setq ll1 '(wide leng ang bo1)
  53. ll2 '(3. 5. 90. "1")
  54.   )
  55.   (defun ajbcs () (xyp-Multiple-Settile ll1 ll2))
  56.   (xyp-initSet ll1 ll2)
  57.   (setq ilst '(("k0" "" "imagebutton" "-2" "24" "zongtutingche" "(princ)")
  58.         "spacer;"
  59.         ("" "车位参数" ":boxed_column{")
  60.         ("wide" "宽度(W)" "real" "8")
  61.         ("leng" "长度(L)" "real" "8")
  62.         ("ang" "角度(a)" "real" "8")
  63.         "spacer;"
  64.         ("bo1" "标数量" "bool")
  65.         "spacer;"
  66.         "}"
  67.         "spacer;"
  68.         ("jbcs" "缺省参数" "button1" "(ajbcs)")
  69.         "spacer;"
  70.         "ioc"
  71.        )
  72.   )
  73.   (if (= (xyp-Dcl-Init Ilst "【总图停车】" t) 1)
  74.     (main-pro)
  75.   )
  76.   (cmdla1)
  77. )

本帖子中包含更多资源

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

x
 楼主| 发表于 2012-7-21 09:31:05 | 显示全部楼层
本帖最后由 xyp1964 于 2020-11-19 23:30 编辑

  1. ;; CheckPtn 删除重复点表 (CheckPtn ptn 500)
  2. (defun CheckPtn (ptn fuzz / lst p1 lst-t pt)
  3.   (setq lst '())
  4.   (while (>= (length ptn) 1)
  5.     (setq p1 (car ptn)
  6.    ptn (cdr ptn)
  7.    lst (cons p1 lst)
  8.    lst-t '()
  9.     )
  10.     (foreach pt ptn
  11.       (if (>= (distance p1 pt) fuzz)
  12. (setq lst-t (cons pt lst-t))
  13.       )
  14.     )
  15.     (setq ptn (reverse lst-t))
  16.   )
  17.   lst
  18. )
  19. ;; 实例:优化多段线,长度小于500的顶点取消
  20. (defun c:tt ()
  21.   (setq s1  (car (entsel "\n选择多段线: "))
  22. ptn (xyp-get-Vertexs s1 0)
  23. ptn (CheckPtn ptn 500)
  24.   )
  25.   (xyp-Entmake-lwPolyline ptn nil)
  26.   (princ)
  27. )


本帖子中包含更多资源

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

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

本版积分规则

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

GMT+8, 2024-12-27 15:37 , Processed in 0.158303 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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