找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 5240|回复: 33

[抛砖引玉]:结构精品程序源码下载

[复制链接]
发表于 2007-6-15 21:49:17 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
本帖是抛砖引玉,希望大家也把好家伙拿出来吧
基本上我的好家伙,除了梁配筋校对程序没有,其他的都在这里了

原文地址:http://www.jgcad.com/article.asp?id=268

该程序配合计算书归并程序,就可以方便的进行计算书归并了.

该程序配合批量打印程序,就可以批量打印计算书了.


  1.   [FONT=courier new]
  2. 主函数:

  3. (defun c:jss()
  4. (init_bonus_error
  5. (list
  6. (list "cmdecho" 0 "osmode" 0
  7. )
  8. T ;flag. True means use undo for error clean up.
  9. );list
  10. )

  11. (alert "\n该函数用于生成所有的计算书.")

  12. ;;; (initget "Y N_Yes No")
  13. ;;; (setq changepos (getkword "\n是否插入到同一点?[Y/N]<Y>:"))
  14. ;;; (if (null changepos) (setq changepos "Yes"))

  15. (setq dir-mid (qf_getFolder (strcat"选择文件夹<" (if filedir filedir "")">:")))
  16. (if dir-mid (setq filedir dir-mid))

  17. (command "layer" "m" "plot" "")
  18. (setq pt-start (getpoint))

  19. ;;荷载. "第_1层梁、墙柱节点输入及楼面荷载平面图.DWG"

  20. (setq file-list (vl-directory-files filedir "第??层梁、墙柱节点输入及楼面荷载平面图.DWG"))
  21. (if file-list (setq max-distx (my_insert pt-start file-list 1)))
  22. (setq pt-start (polar pt-start 0 max-distx))

  23. ;;板筋;bjss板计算结果01.DWG
  24. (setq file-list (vl-directory-files filedir "*板计算结果*.dwg"))
  25. (if file-list (setq max-distx (my_insert pt-start file-list 100)))
  26. (setq pt-start (polar pt-start 0 (+ paper-dist max-distx)))

  27. ;;梁筋;
  28. (setq file-list (vl-directory-files filedir "wpj*.dwg"))
  29. (if file-list (setq max-distx (my_insert pt-start file-list 1000)))
  30. (setq pt-start (polar pt-start 0 (+ paper-dist max-distx)))

  31. ;;梁截面;

  32. (setq file-list (vl-directory-files filedir "FLR*.dwg"))
  33. (if file-list (setq max-distx (my_insert pt-start file-list 1000)))
  34. (setq pt-start (polar pt-start 0 (+ paper-dist max-distx)))

  35. )

  36.   [/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
 楼主| 发表于 2007-6-15 22:09:37 | 显示全部楼层

[原创]:结构软件]体积配箍率计算程序autolisp源码下载


  1.   [FONT=courier new]
  2. (defun c:get-colu-pgl ()
  3. (princ "\n选择箍筋配筋值:")
  4. (setq en (single_select (list (cons 0 "*TEXT")(cons 1 "*%%13#*")) nil))
  5. (princ "\n选择墙大样外边框:")
  6. (setq  colu-en  (SINGLE_SELECT
  7.      (list  (cons 0 "LWPOLYLINE")
  8.       (cons 8 "*colu*,*柱*,*墙*,*wall*")
  9.      )
  10.      nil
  11.     )
  12. )
  13. (get-ss-pgl colu-en en)
  14. )
  15.   [/FONT]


http://www.jgcad.com/uploads/200706/09_233215_colugg.rar

附件是用到的裤函数
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2007-6-16 00:02:22 | 显示全部楼层
还没在cad里试用。先提点问题:)

1、是否要求外框为pline,以减少求交点的麻烦?
2、是否要求钢筋为line?若增加考虑pline的钢筋线,然后在程序中explode后求解,最后再undo回去,有没有可能呢?
3、对于钢筋弯头是如何处理的?呵呵,没太细看,还不太明白。

求交点后减去保护层的方法很不错,我原来以为只能直接量钢筋直线长度然后累加呢。那样误差很大。每个人画图都不太标准。

感谢分享:)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-6-16 07:56:44 | 显示全部楼层
1.外框当然要求是PL线了,不然的话,不好选择.
2.里面的钢筋要求是PL线,就像是TSSD生成的那样.
3.钢筋的弯头是不计算的,通过判断钢筋长度,短于一定长度就不计算的
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-6-16 23:03:33 | 显示全部楼层

[原创]:结构修改钢筋的智能程序=>黄金左手程序[源码]

(defun c:help-cc ()
(textscr)
(princ
" ===>黄金左手程序说明<===
本程序是通过输入数字或字母代替代替输入钢筋根数及直径\n
以减少用户输入钢筋是的繁杂钢筋输入过程.
以下是钢筋直径,钢筋根数对照表."
)
(princ "\n直径:a=14,b=16,c=18,d=20,e=22,f=25...")
(princ "\n根数:a=1,b=2,c=3,d=4,e=5,f=6...")
(princ "使用程序中有几点要注意的问题,了解这些问题将有利于你更好的使用本程序.
   1.程序运行过程中会自动查找梁线,用于判断梁宽,从而可以自动加上钢筋排数信息,目前只支持二排筋.
   2.程序识别的梁线的图层为\"*梁*,*beam*,bout \" 其中*可以是任意字符,
   例如你的梁线图层为\"梁实线\",则会被程序所支持.
   3.另外,为了保持程序对各种比例的图形都能识别出梁宽,在命令运行过程中按右键可以设置图形比例.
   4.右键菜单中还可以设置保护层厚度.
   5.本程序还在不断优化中,以期使你的画图效率得到极大的提高,
   请继续关注官方网站中\"结构软件\"版块的最新态
   网址http://www.jgcad.com
   6.如果你想改变程序默认的钢筋直径,钢筋根数对照表,
   你可以修改文件cc-user.lsp中的相应内容,
   并把该文件置于AutoCAD的支持目录下(例如support这个目录).
   7.本程序作者 吴所不及,如有转载请注明作都及官方网址等信息!
   未经许可,本程序不得用于任何商业软件.")
(princ)

)

下载地址:
http://www.jgcad.com/article.asp?id=264
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-6-17 07:31:04 | 显示全部楼层

计算书批量打印程序源码

计算书批量打印程序源码


  1. (defun c:mypt (/ AcadObject  AcadDocument mSpace preferenceSel fileSel plot-filedir plots plot)
  2.   (princ "\n选择边框为蓝色的PL线:")
  3.   (setq ss (ssget '((0 . "LWPOLYLINE")(62 . 5))))
  4.   (setq ss-list (WJM_SS2LST ss))

  5.     (setq    AcadObject   (vlax-get-acad-object)
  6.        AcadDocument (vla-get-ActiveDocument AcadObject)
  7.        mSpace        (vla-get-ModelSpace AcadDocument)

  8.   )
  9.   (setq preferenceSel (vla-get-Preferences AcadObject))
  10.   (setq fileSel (vla-get-Files preferenceSel))

  11.   (setq plot-filedir(vla-get-PrinterConfigPath fileSel));_打印机.
  12.   (setq plots (vl-directory-files plot-filedir "*.pc3"))
  13.   (setq plot (myp:get_properties plots "选择打印机"))
  14.   ;(setq plot (substr style 1 (- (strlen style) 4)))
  15.   
  16.   (setq plot-filedir(vla-get-PrinterStyleSheetPath fileSel));_打印样式.
  17.   (setq plot-styles (vl-directory-files plot-filedir "*.ctb"))
  18.   (setq style (myp:get_properties plot-styles  "打印样式"))
  19.   ;(setq style (substr plot 1 (- (strlen plot) 4)))
  20.   
  21.   (setq        paper-size
  22.          (myp:get_properties
  23.            (list
  24.              "A3"
  25.              "A4"
  26.              "过大尺寸:ISO A0 "
  27.              "过大尺寸:ISO A1  (横向)"
  28.              "过大尺寸:ISO A1  (纵向)"
  29.              "过大尺寸:ISO A2  (横向)"
  30.              "过大尺寸:ISO A2  (纵向)"
  31.             )
  32.            "选择图纸尺寸"
  33.          )
  34.   ) ;_纸张选择.

  35.   (setq paper-dir-mid
  36.   (myp:get_properties
  37.            (list
  38.              "自动根据长宽比判断"
  39.              "横向(L)"
  40.              "纵向(P)"
  41.             )
  42.            "选择图纸方向"
  43.          ))

  44.   (setq paper-plot-to-file-mid
  45.   (myp:get_properties
  46.            (list             
  47.              "打印到文件"
  48.              "直接打印"
  49.             )
  50.            "选择是否打到文件"
  51.          ))

  52.   (setq paper-plot-to-file
  53.   (cond
  54.     ((= paper-plot-to-file-mid "打印到文件") "Y")
  55.     ((= paper-plot-to-file-mid "直接打印") "N")
  56.     ))

  57.   
  58.   (setq i 0)
  59.   (foreach en ss-list
  60.     (progn
  61.       (setq i (1+ i))
  62.       
  63.       (setq obj (vlax-ename->vla-object en))
  64.       (vla-getboundingbox obj 'll 'ur)
  65.       (setq pt1 (vlax-safearray->list ll))
  66.       (setq pt2 (vlax-safearray->list ur))

  67.       (setq paper-dir (cond
  68.                         ((= paper-dir-mid "自动根据长宽比判断")
  69.                          (if (>        (- (car pt2) (car pt1));_x
  70.                                 (- (cadr pt2) (cadr pt1));_y
  71.                              )
  72.                            "L"
  73.                            "P"
  74.                          )
  75.                          )
  76.                         ((= paper-dir-mid "横向(L)") "L")
  77.                         ((= paper-dir-mid "纵向(P)") "P")
  78.                         )
  79.             )
  80.       (if (= paper-plot-to-file "Y")
  81.       (command "_.PLOT"
  82.                "Y";_是否需要详细打印配置?[是(Y)/否(N)] <否>: y
  83.                "";_输入布局名或 [?] <模型>:
  84.                plot;_输入输出设备的名称或 [?] <在 网管 上自动 HP LaserJet 5100 PCL 6>:
  85.                paper-size;_输入图纸尺寸或 [?] <A3>:
  86.                
  87.                "m";_输入图纸单位 [英寸(I)/毫米(M] <毫米>:               
  88.                paper-dir;_输入图形方向 [纵向(P)/横向(L)] <横向>:
  89.                "N";_是否反向打印?[是(Y)/否(N)] <否>:
  90.                "W";_输入打印区域 [显示(D)/范围(E)/图形界限(L)/视图(V)/窗口(W)] <范围>: w
  91.                pt1;_输入窗口的左下角 <0.000000,0.000000>: 输入窗口的右上角 <0.000000,0.000000>:
  92.                pt2;_输入窗口的右上角 <0.000000,0.000000>:
  93.                "f";_输入打印比例 (打印的 毫米=图形单位) 或 [布满(F)] <Fit>: fit
  94.                "c";_输入打印偏移 (x,y) 或 [居中打印(C)] <0.00,0.00>: c
  95.                "Y";_是否按样式打印?[是(Y)/否(N)] <是>:
  96.                style;_输入打印样式表名称或 [?] (输入 . 表示无) <hp5100.ctb>:
  97.                "Y";_是否打印线宽?[是(Y)/否(N)] <是>:
  98.                "N";_是否删除隐藏线?[是(Y)/否(N)] <否>:
  99.                paper-plot-to-file ;_是否打印到文件 [是(Y)/否(N)] <N>: y
  100.                (strcat (getvar "DWGPREFIX") (rtos i 2 0) ".plt" );_文件名.             
  101.                "Y";_是否保存模型选项卡的修改 .
  102.                "Y";_是否继续打印 .
  103.               )
  104.       (command "_.PLOT"
  105.                "Y";_是否需要详细打印配置?[是(Y)/否(N)] <否>: y
  106.                "";_输入布局名或 [?] <模型>:
  107.                plot;_输入输出设备的名称或 [?] <在 网管 上自动 HP LaserJet 5100 PCL 6>:
  108.                paper-size;_输入图纸尺寸或 [?] <A3>:
  109.                
  110.                "m";_输入图纸单位 [英寸(I)/毫米(M] <毫米>:               
  111.                paper-dir;_输入图形方向 [纵向(P)/横向(L)] <横向>:
  112.                "N";_是否反向打印?[是(Y)/否(N)] <否>:
  113.                "W";_输入打印区域 [显示(D)/范围(E)/图形界限(L)/视图(V)/窗口(W)] <范围>: w
  114.                pt1;_输入窗口的左下角 <0.000000,0.000000>: 输入窗口的右上角 <0.000000,0.000000>:
  115.                pt2;_输入窗口的右上角 <0.000000,0.000000>:
  116.                "f";_输入打印比例 (打印的 毫米=图形单位) 或 [布满(F)] <Fit>: fit
  117.                "c";_输入打印偏移 (x,y) 或 [居中打印(C)] <0.00,0.00>: c
  118.                "Y";_是否按样式打印?[是(Y)/否(N)] <是>:
  119.                style;_输入打印样式表名称或 [?] (输入 . 表示无) <hp5100.ctb>:
  120.                "Y";_是否打印线宽?[是(Y)/否(N)] <是>:
  121.                "N";_是否删除隐藏线?[是(Y)/否(N)] <否>:
  122.                paper-plot-to-file ;_是否打印到文件 [是(Y)/否(N)] <N>: y               
  123.               "Y";_是否保存模型选项卡的修改 .
  124.                "Y";_是否继续打印 .
  125.               )
  126.         );_if

  127.       
  128.       (princ "\n*********************\n")
  129.     )
  130.   )
  131. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-6-17 07:35:25 | 显示全部楼层
预留画柱网程序之柱标注,柱归并
先传个旧版的画柱网程序
不传东西下让发表
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-6-17 07:38:42 | 显示全部楼层
计算书归并程序源码
有好几个版本了.
如果要研究程序开发的话,就可以比较一下各个版本的选择方式有什么不同
速度差很多的


第一版,速度最慢的
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-6-17 07:40:29 | 显示全部楼层
第二版,选择集的构造方式有所不同,所以速度会快很多

第二版带有配筋判断的功能,如果是只有两层的计算书
则会进行比较,用于新旧计算书的比较
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 69个

财富等级: 招财进宝

发表于 2007-6-17 15:05:16 | 显示全部楼层
楼主!不错!
不过程序中少了一些子程序!如:(myprogress i% lenss1)等等!不如一起发上来!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-6-17 19:45:52 | 显示全部楼层
少掉的是一些无关紧要的函数,删掉就可以了
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2007-6-17 22:00:36 | 显示全部楼层
吴老大,配箍率好像少了个wjm_midp子程序
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-6-17 22:03:43 | 显示全部楼层
这个函数好长,用于求交点的.
晓东上面来的.

  1. (progn
  2. ;_判断物体类型,选择相应函数求交点_______________________________________
  3.   (defun wjm_midp (en_1 en_2 lim / intersections)
  4.     (setq intersections nil)
  5.     (wjmf_Midp en_1 en_2 lim )
  6.     intersections
  7.     )
  8.   (defun wjmf_Midp (en_1 en_2 lim / )
  9.     ;(setq intersections nil)
  10.     (IF        (LISTP EN_1)
  11.       ()
  12.       (SETQ EN_1 (ENTGET EN_1))
  13.     )
  14.     (IF        (LISTP EN_2)
  15.       ()
  16.       (SETQ EN_2 (ENTGET EN_2))
  17.     )
  18.     (setq e1_tp (cdr (assoc 0 EN_1)))
  19.     (setq e2_tp (cdr (assoc 0 EN_2)))
  20.     (cond
  21.       ((= "LWPOLYLINE" e1_tp)
  22.        (pi? en_1 en_2 lim)
  23.       )
  24.       ((= "LWPOLYLINE" e2_tp)
  25.        (pi? en_2 en_1 (change_order lim))
  26.       )
  27.       ((and (= "CIRCLE" e1_tp) (= "CIRCLE" e2_tp))
  28.        (cic en_1 en_2 lim)
  29.       )
  30.       ((and (= "ARC" e1_tp) (= "ARC" e2_tp))
  31.        (aia en_1 en_2 lim)
  32.       )
  33.       ((and (= "LINE" e1_tp) (= "LINE" e2_tp))
  34.        (lil en_1 en_2 lim)
  35.       )

  36.       ((and (= "CIRCLE" e1_tp) (= "ARC" e2_tp))
  37.        (cia en_1 en_2 lim)
  38.       )
  39.       ((and (= "CIRCLE" e1_tp) (= "LINE" e2_tp))
  40.        (cil en_1 en_2 lim)
  41.       )
  42.       ((and (= "ARC" e1_tp) (= "LINE" e2_tp))
  43.        (ail en_1 en_2 lim)
  44.       )

  45.       ((and (= "ARC" e1_tp) (= "CIRCLE" e2_tp))
  46.        (cia en_2 en_1 (change_order lim))
  47.       )
  48.       ((and (= "LINE" e1_tp) (= "CIRCLE" e2_tp))
  49.        (cil en_2 en_1 (change_order lim))
  50.       )
  51.       ((and (= "LINE" e1_tp) (= "ARC" e2_tp))
  52.        (ail en_2 en_1 (change_order lim))
  53.       )
  54.       (T (princ "\n请选择圆、圆弧或者线段!"))
  55.     )
  56.     intersections
  57.   )
  58. ;_反转延长标志_________________________________________________________
  59.   (defun change_order (num)
  60.     (cond
  61.       ((= num 1) (setq num 2))
  62.       ((= num 2) (setq num 1))
  63.     )
  64.     num
  65.   )
  66. ;______________________________________________________________________
  67. ;______________________________________________________________________
  68. ;_________________求交点应用函数部分____BY__WKAI__晓东CAD论坛__________
  69. ;___________________2003.12.11.14.33___________________________________
  70. ;____limited__决定求交点时物体是否延伸_________________________________
  71. ;____0 都延伸,1 一号不延伸,2 二号不延伸,3 全部不延伸___________________

  72. ;_圆、圆交点___________________________________________________________
  73.   (defun cic (c1 c2 limited / c1_cn c2_cn c1_rd c2_rd ins)
  74.     (IF        (LISTP C1)
  75.       ()
  76.       (SETQ C1 (ENTGET C1))
  77.     )
  78.     (IF        (LISTP C2)
  79.       ()
  80.       (SETQ C2 (ENTGET C2))
  81.     )
  82.     (setq c1_cn (cdr (assoc 10 c1)))
  83.     (setq c2_cn (cdr (assoc 10 c2)))
  84.     (setq c1_rd (cdr (assoc 40 c1)))
  85.     (setq c2_rd (cdr (assoc 40 c2)))
  86.     (setq ins (c_int_c c1_cn c1_rd c2_cn c2_rd))
  87.     (if        ins
  88.       (setq intersections (append intersections ins))
  89.     )
  90.     intersections
  91.   )
  92. ;_圆、圆弧交点_________________________________________________________
  93.   (defun cia (c1 c2 limited / ins ins_tmp c1_cn c2_cn c1_rd c2_rd n)
  94.     (IF        (LISTP C1)
  95.       ()
  96.       (SETQ C1 (ENTGET C1))
  97.     )
  98.     (IF        (LISTP C2)
  99.       ()
  100.       (SETQ C2 (ENTGET C2))
  101.     )
  102.     (setq c1_cn (cdr (assoc 10 c1)))
  103.     (setq c2_cn (cdr (assoc 10 c2)))
  104.     (setq c1_rd (cdr (assoc 40 c1)))
  105.     (setq c2_rd (cdr (assoc 40 c2)))
  106.     (setq c2_an1 (cdr (assoc 50 c2)))
  107.     (setq c2_an2 (cdr (assoc 51 c2)))
  108.     (setq ins (c_int_c c1_cn c1_rd c2_cn c2_rd))
  109.     (if        (or (= limited 2) (= limited 3))
  110.       (progn
  111.         (foreach n ins
  112.           (if (p_on_arc n c2_cn c2_an1 c2_an2)
  113.             (if        ins_tmp
  114.               (setq ins_tmp (append ins_tmp (list n)))
  115.               (setq ins_tmp (list n))
  116.             )
  117.           )
  118.         )
  119.         (setq ins ins_tmp)
  120.       )
  121.     )
  122.     (setq ins ins_tmp)
  123.     (if        ins
  124.       (setq intersections (append intersections ins))
  125.     )
  126.     intersections
  127.   )
  128. ;_圆弧、圆弧交点________________________________________________________
  129.   (defun aia (c1      c2      limited /              ins     ins_tmp c1_cn
  130.               c2_cn   c1_rd   c2_rd   c1_an1  c1_an2  c2_an1  c2_an2
  131.               n
  132.              )
  133.     (IF        (LISTP C1)
  134.       ()
  135.       (SETQ C1 (ENTGET C1))
  136.     )
  137.     (IF        (LISTP C2)
  138.       ()
  139.       (SETQ C2 (ENTGET C2))
  140.     )
  141.     (setq c1_cn (cdr (assoc 10 c1)))
  142.     (setq c2_cn (cdr (assoc 10 c2)))
  143.     (setq c1_rd (cdr (assoc 40 c1)))
  144.     (setq c2_rd (cdr (assoc 40 c2)))
  145.     (setq c1_an1 (cdr (assoc 50 c1)))
  146.     (setq c1_an2 (cdr (assoc 51 c1)))
  147.     (setq c2_an1 (cdr (assoc 50 c2)))
  148.     (setq c2_an2 (cdr (assoc 51 c2)))
  149.     (setq ins (c_int_c c1_cn c1_rd c2_cn c2_rd))
  150.     (if        (or (= limited 1) (= limited 3))
  151.       (progn
  152.         (foreach n ins
  153.           (if (p_on_arc n c1_cn c1_an1 c1_an2)
  154.             (if        ins_tmp
  155.               (setq ins_tmp (append ins_tmp (list n)))
  156.               (setq ins_tmp (list n))
  157.             )
  158.           )
  159.         )
  160.         (setq ins ins_tmp)
  161.       )
  162.     )
  163.     (setq ins_tmp nil)
  164.     (if        (or (= limited 2) (= limited 3))
  165.       (progn
  166.         (foreach n ins
  167.           (if (p_on_arc n c2_cn c2_an1 c2_an2)
  168.             (if        ins_tmp
  169.               (setq ins_tmp (append ins_tmp (list n)))
  170.               (setq ins_tmp (list n))
  171.             )
  172.           )
  173.         )
  174.         (setq ins ins_tmp)
  175.       )
  176.     )
  177.     (if        ins
  178.       (setq intersections (append intersections ins))
  179.     )
  180.     intersections
  181.   )
  182. ;_圆、直线交点______________________________________________________
  183.   (defun cil (c1 l1 limited / end1 end2 cen rad ins ins_tmp n)
  184.     (IF        (LISTP C1)
  185.       ()
  186.       (SETQ C1 (ENTGET C1))
  187.     )
  188.     (IF        (LISTP L1)
  189.       ()
  190.       (SETQ L1 (ENTGET L1))
  191.     )
  192.     (setq end1 (cdr (assoc 10 l1)))
  193.     (setq end2 (cdr (assoc 11 l1)))
  194.     (setq cen (cdr (assoc 10 c1)))
  195.     (setq rad (cdr (assoc 40 c1)))
  196.     (setq ins (L_INT_C end1 end2 cen rad))
  197.     (if        (or (= limited 2) (= limited 3))
  198.       (progn
  199.         (foreach n ins
  200.           (if (p_on_line n end1 end2)
  201.             (if        ins_tmp
  202.               (setq ins_tmp (append ins_tmp (list n)))
  203.               (setq ins_tmp (list n))
  204.             )
  205.           )
  206.         )
  207.         (setq ins ins_tmp)
  208.       )
  209.     )
  210.     (if        ins
  211.       (setq intersections (append intersections ins))
  212.     )
  213.     intersections
  214.   )
  215. ;_圆弧、直线交点______________________________________________________
  216.   (defun ail
  217.          (c1 l1 limited / end1 end2 cen rad ang1 ang2 ins ins_tmp n)
  218.     (IF        (LISTP C1)
  219.       ()
  220.       (SETQ C1 (ENTGET C1))
  221.     )
  222.     (IF        (LISTP L1)
  223.       ()
  224.       (SETQ L1 (ENTGET L1))
  225.     )
  226.     (setq end1 (cdr (assoc 10 l1)))
  227.     (setq end2 (cdr (assoc 11 l1)))
  228.     (setq cen (cdr (assoc 10 c1)))
  229.     (setq rad (cdr (assoc 40 c1)))
  230.     (setq ang1 (cdr (assoc 50 c1)))
  231.     (setq ang2 (cdr (assoc 51 c1)))
  232.     (setq ins (L_INT_C end1 end2 cen rad))
  233.     (if        (or (= limited 1) (= limited 3))
  234.       (progn
  235.         (foreach n ins
  236.           (if (p_on_arc n cen ang1 ang2)
  237.             (if        ins_tmp
  238.               (setq ins_tmp (append ins_tmp (list n)))
  239.               (setq ins_tmp (list n))
  240.             )
  241.           )
  242.         )
  243.         (setq ins ins_tmp)
  244.       )
  245.     )
  246.     (setq ins_tmp nil)
  247.     (if        (or (= limited 2) (= limited 3))
  248.       (progn
  249.         (foreach n ins
  250.           (if (p_on_line n end1 end2)
  251.             (if        ins_tmp
  252.               (setq ins_tmp (append ins_tmp (list n)))
  253.               (setq ins_tmp (list n))
  254.             )
  255.           )
  256.         )
  257.         (setq ins ins_tmp)
  258.       )
  259.     )
  260.     (if        ins
  261.       (setq intersections (append intersections ins))
  262.     )
  263.     intersections
  264.   )
  265. ;_直线、直线交点______________________________________________________
  266.   (defun lil
  267.          (l1 l2 limited / n ins ins_tmp l1_en1 l1_en2 l2_en1 l2_en2)
  268.     (if        (listp l1)
  269.       ()
  270.       (setq l1 (entget l1))
  271.     )
  272.     (if        (listp l2)
  273.       ()
  274.       (setq l2 (entget l2))
  275.     )
  276.     (setq l1_en1 (cdr (assoc 10 l1)))
  277.     (setq l1_en2 (cdr (assoc 11 l1)))
  278.     (setq l2_en1 (cdr (assoc 10 l2)))
  279.     (setq l2_en2 (cdr (assoc 11 l2)))
  280.     (if        (setq ins_tmp (inters l1_en1 l1_en2 l2_en1 l2_en2 nil))
  281.       (setq ins (list ins_tmp))
  282.     )
  283.     (setq ins_tmp nil)
  284.     (if        (or (= limited 1) (= limited 3))
  285.       (progn
  286.         (foreach n ins
  287.           (if (p_on_line n l1_en1 l1_en2)
  288.             (setq ins_tmp (list n))
  289.           )
  290.         )
  291.         (setq ins ins_tmp)
  292.       )
  293.     )
  294.     (setq ins_tmp nil)
  295.     (if        (or (= limited 2) (= limited 3))
  296.       (progn
  297.         (foreach n ins
  298.           (if (p_on_line n l2_en1 l2_en2)
  299.             (setq ins_tmp (list n))
  300.           )
  301.         )
  302.         (setq ins ins_tmp)
  303.       )
  304.     )
  305.     (if        ins
  306.       (setq intersections (append intersections ins))
  307.     )
  308.     intersections
  309.   )
  310. ;_复义线、其它实体交点______________________________________________________
  311. ;_如果是两条复义线通过递归求交______________________________________________
  312.   (defun pi? (pl1     e2      lim     /              p1      p2      p3
  313.               pts-pl1 n              sym1    sym2    ang1    ang2
  314.               pl1-sub-ent
  315.              )
  316.     (if        (listp pl1)
  317.       ()
  318.       (setq pl1 (entget pl1))
  319.     )
  320.     (if        (listp e2)
  321.       ()
  322.       (setq e2 (entget e2))
  323.     )
  324.     (setq pts-pl1 (GET_ENDS_PL pl1))
  325.     (setq n 1)
  326.     (while (< (+ 1 n) (length pts-pl1))
  327.       (setq p1 (nth (- n 1) pts-pl1))
  328.       (setq p2 (nth n pts-pl1))
  329.       (setq p3 (nth (+ n 1) pts-pl1))
  330.       (if (listp p2)
  331.         (progn
  332.           (setq sym1 (car p2))
  333.           (setq p2 (cdr p2))
  334.           (if (= 1 sym1)
  335.             (setq ang1 (angle p2 p1)
  336.                   ang2 (angle p2 p3)
  337.             )
  338.             (setq ang1 (angle p2 p3)
  339.                   ang2 (angle p2 p1)
  340.             )
  341.           )
  342.           (setq        pl1-sub-ent
  343.                  (list (cons 0 "ARC")
  344.                        (cons 10 p2)
  345.                        (cons 40 (distance p1 p2))
  346.                        (cons 50 ang1)
  347.                        (cons 51 ang2)
  348.                        (cons 62 1)
  349.                  )
  350.           )
  351.         )
  352.         (setq pl1-sub-ent
  353.                (list (cons 0 "LINE") (cons 10 p1) (cons 11 p3) (cons 62 1))
  354.         )
  355.       )
  356.       (wjmf_Midp pl1-sub-ent e2 lim)
  357.       (setq n (+ 2 n))
  358.     )
  359.   )
  360. ;______________________________________________________________________
  361. ;______________________________________________________________________
  362. ;_________________求交点核心函数部分____BY__WKAI__晓东CAD论坛__________
  363. ;___________________2003.12.11.14.33___________________________________
  364. ;______________________________________________________________________
  365. ;_精度设置_____________________________________________________________
  366.   (setq min_num 0.0000001)
  367. ;___________________圆与圆交点函数,输入值圆心1,半径1,圆心2,半径2.返回值交点表
  368.   (defun c_int_c (c1_cen c1_rad c2_cen c2_rad / ints c1c2_dis dd ee)
  369.     (setq c1c2_dis (distance c1_cen c2_cen))
  370.     (cond
  371.       ((equal c1c2_dis (+ c1_rad c2_rad) min_num)
  372.        (setq ints (list (polar c1_cen (angle c1_cen c2_cen) c1_rad)))
  373.       )
  374.       ((equal c1c2_dis (abs (- c1_rad c2_rad)) min_num)
  375.        (if (minusp (- c1_rad c2_rad))
  376.          (setq ints (list (polar c2_cen (angle c2_cen c1_cen) c2_rad)))
  377.          (setq ints (list (polar c1_cen (angle c1_cen c2_cen) c1_rad)))
  378.        )
  379.       )
  380.       ((and (> c1c2_dis (abs (- c1_rad c2_rad)))
  381.             (< c1c2_dis (+ c1_rad c2_rad))
  382.        )
  383.        (progn
  384.          (setq dd (/ (-        (+ (* c1c2_dis c1c2_dis) (* c1_rad c1_rad))
  385.                         (* c2_rad c2_rad)
  386.                      )
  387.                      (* 2 c1c2_dis)
  388.                   )
  389.          )
  390.          (setq ee (sqrt (- (* c1_rad c1_rad) (* dd dd))))
  391.          (setq
  392.            ints        (list (polar (polar c1_cen (angle c1_cen c2_cen) dd)
  393.                              (+ (angle c1_cen c2_cen) (/ pi 2))
  394.                              ee
  395.                       )
  396.                 )
  397.          )
  398.          (setq ints
  399.                 (append
  400.                   ints
  401.                   (list        (polar (polar c1_cen (angle c1_cen c2_cen) dd)
  402.                                (- (angle c1_cen c2_cen) (/ pi 2))
  403.                                ee
  404.                         )
  405.                   )
  406.                 )
  407.          )

  408.        )
  409.       )
  410.     )
  411.     ints
  412.   )
  413. ;___________________直线与圆交点函数,输入值直线端点1,端点2,圆心,半径.返回值交点表
  414.   (defun L_INT_C (l_end1 l_end2        c_cen c_rad / pedal dist_cen_l int1 int2
  415.                   ints)
  416.     (setq pedal (pedal_to_line c_cen l_end1 l_end2))
  417.     (setq dist_cen_l (distance pedal c_cen))
  418.     (cond
  419.       ((equal c_rad dist_cen_l min_num) (setq ints (list pedal)))
  420.       ((> c_rad dist_cen_l)
  421.        (progn
  422.          (setq int1
  423.                 (polar pedal
  424.                        (angle l_end1 l_end2)
  425.                        (sqrt (- (* c_rad c_rad) (* dist_cen_l dist_cen_l)))
  426.                 )
  427.          )
  428.          (setq int2
  429.                 (polar pedal
  430.                        (+ pi (angle l_end1 l_end2))
  431.                        (sqrt (- (* c_rad c_rad) (* dist_cen_l dist_cen_l)))
  432.                 )
  433.          )
  434.          (setq ints (list int1 int2))
  435.        )
  436.       )
  437.     )
  438.     ints
  439.   )
  440. ;______________________________________________________________________
  441. ;______________________________________________________________________
  442. ;_________________辅助测试函数部分____BY__WKAI__晓东CAD论坛____________
  443. ;___________________2003.12.11.14.33___________________________________
  444. ;______________________________________________________________________
  445. ;___________________求点到直线的垂足的函数,输入值测试点,直线端点1,端点2.返回值垂足坐标
  446.   (defun pedal_to_line (pt pt1 pt2)
  447.     (inters
  448.       pt
  449.       (polar pt (+ (/ pi 2) (angle pt1 pt2)) 1000)
  450.       pt1
  451.       pt2
  452.       nil
  453.     )
  454.   )
  455. ;___________________测试点是否在线段上,输入值测试点,线段端点1,端点2.返回值T或者NIL
  456.   (defun p_on_line (pt pt1 pt2)
  457.     (equal (+ (distance pt pt1) (distance pt pt2))
  458.            (distance pt1 pt2)
  459.            min_num
  460.     )
  461.   )
  462. ;___________________测试点是否在圆弧上,输入值测试点,圆心,起始角度,终止角度.返回值T或者NIL
  463.   (defun p_on_arc (pt cn an1 an2)
  464.     (if        (> an1 an2)
  465.       (setq an1 (- an1 (* 2 pi)))
  466.     )
  467.     (or
  468.       (and (>= (+ (angle cn pt) pi pi) an1)
  469.            (<= (+ (angle cn pt) pi pi) an2)
  470.       )
  471.       (and (>= (angle cn pt) an1) (<= (angle cn pt) an2))
  472.       (and (>= (- (angle cn pt) pi pi) an1)
  473.            (<= (- (angle cn pt) pi pi) an2)
  474.       )
  475.     )
  476.   )
  477. ;___________________获取轻装多义线的各个端点和圆心(如果有),输入值复义线实体名或表.返回值端点及圆心表
  478.   (DEFUN GET_ENDS_PL (PL      /              dis     dis1    m              N
  479.                       PT-LST  PT-LST-TMP      sym     mid-p1p2
  480.                       NTH-PT  p1      p2      pl-tp   pt1     rad
  481.                       sym
  482.                      )
  483.     (IF        (LISTP PL)
  484.       ()
  485.       (SETQ PL (ENTGET PL))
  486.     )
  487.     (SETQ PL-TP (CDR (ASSOC 70 PL)))
  488.     (FOREACH N PL
  489.       (IF (OR (= 10 (CAR N)) (= 42 (CAR N)))
  490.         (SETQ PT-LST (APPEND PT-LST (LIST (CDR N))))
  491.       )
  492.     )
  493.     (IF        (= 1 PL-TP)
  494.       (SETQ PT-LST (APPEND PT-LST (LIST (CDR (ASSOC 10 PL)))))
  495.       (SETQ PT-LST (reverse (cdr (reverse PT-LST))))
  496.     )
  497.     (SETQ M 0)
  498.     (while (<= (+ 1 m) (LENGTH PT-LST))
  499.       (SETQ NTH-PT (NTH M PT-LST))
  500.       (IF (LISTP NTH-PT)
  501.         (SETQ PT-LST-TMP (APPEND PT-LST-TMP (LIST NTH-PT)))
  502.         (PROGN
  503.           (IF (EQUAL NTH-PT 0 MIN_NUM)
  504.             (SETQ PT-LST-TMP (APPEND PT-LST-TMP (LIST NTH-PT)))
  505.             (PROGN
  506.               (SETQ P1 (NTH (- M 1) PT-LST))
  507.               (SETQ P2 (NTH (+ M 1) PT-LST))
  508.               (SETQ MID-P1P2 (LIST (/ (+ (CAR P1) (CAR P2)) 2)
  509.                                    (/ (+ (CADR P1) (CADR P2)) 2)
  510.                              )
  511.               )
  512.               (SETQ DIS (/ (DISTANCE P1 P2) 2))
  513.               (SETQ DIS1 (ABS (* DIS NTH-PT)))
  514.               (SETQ RAD (/ (+ (* DIS DIS) (* DIS1 DIS1)) (* 2 DIS1)))
  515.               (IF (minusp NTH-PT)
  516.                 (SETQ
  517.                   PT1 (append (list -1)
  518.                               (POLAR MID-P1P2
  519.                                      (- (ANGLE P1 P2) (/ PI 2))
  520.                                      (- RAD DIS1)
  521.                               )
  522.                       )
  523.                 )
  524.                 (SETQ
  525.                   PT1 (append (list 1)
  526.                               (POLAR MID-P1P2
  527.                                      (+ (ANGLE P1 P2) (/ PI 2))
  528.                                      (- RAD DIS1)
  529.                               )
  530.                       )
  531.                 )
  532.               )
  533.               (SETQ PT-LST-TMP (APPEND PT-LST-TMP (LIST PT1)))
  534.             )
  535.           )
  536.         )
  537.       )
  538.       (SETQ M (+ 1 M))
  539.     )
  540.     (SETQ PT-LST PT-LST-TMP)
  541.   )
  542. ;_________________________________________________________________________________________
  543. ;_________________________________________________________________________________________
  544. ;_________________________________________________________________________________________
  545. ;_________________________________________________________________________________________
  546. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2007-6-17 23:13:36 | 显示全部楼层
不知有没有哪位能用起来的,不知是什么原因,加了子程序还是提示错误,图层都没有问题
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-6-17 23:50:43 | 显示全部楼层
上面的裤函数下载一下
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-16 03:27 , Processed in 0.455636 second(s), 60 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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