找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

[研讨] 画轴剖面

[复制链接]

已领礼包: 3199个

财富等级: 富可敌国

发表于 2014-4-26 08:52:59 | 显示全部楼层
HLCAD 发表于 2014-4-26 08:47
截断线符号还有好看一点的,供参考

源码呢? 望大师高风亮节

点评

不好意思,商业程序中自带的。 据我所知Rkadmech软件有,你可上“明经”搜索一下,有网友上传过  详情 回复 发表于 2014-4-26 08:58
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 5600个

财富等级: 富甲天下

发表于 2014-4-26 08:58:11 | 显示全部楼层
lucas3 发表于 2014-4-26 08:52
源码呢? 望大师高风亮节

不好意思,商业程序中自带的。
据我所知Rkadmech软件有,你可上“明经”搜索一下,有网友上传过

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

使用道具 举报

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

使用道具 举报

已领礼包: 3199个

财富等级: 富可敌国

发表于 2014-4-29 18:57:32 | 显示全部楼层
黄大,那就改改,要是4条线,那就截断成管子
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2014-4-29 20:10:00 | 显示全部楼层
很好的程序,如果能判别四条线为管子~
那程序就完美了!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 3199个

财富等级: 富可敌国

发表于 2014-5-2 14:48:45 | 显示全部楼层
长老,说好的画管子的呢?{:soso_e113:}

点评

;;轴剖面 (defun C:w1 (/ CMD1 FIL OSM1 P1 P2 SS) (defun *error* (msg) (vl-bt) (if *DOC* (_EndUndo *DOC*) ) (while (not (equal (getvar "cmdnames") "")) (command ni  详情 回复 发表于 2014-9-28 10:50
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 604个

财富等级: 财运亨通

 楼主| 发表于 2014-9-28 10:50:38 | 显示全部楼层
本帖最后由 /db_自贡黄明儒_ 于 2014-9-28 10:52 编辑
  1. ;;轴剖面
  2. (defun C:w1 (/ CMD1 FIL OSM1 P1 P2 SS)
  3.   (defun *error* (msg)
  4.     (vl-bt)
  5.     (if        *DOC*
  6.       (_EndUndo *DOC*)                                          
  7.     )
  8.     (while (not (equal (getvar "cmdnames") "")) (command nil))
  9.     (cond (cmd1 (setvar "cmdecho" cmd1)))
  10.     (HH:ayOSMode T)
  11.     (princ "\n 出错啦!")
  12.     (princ)
  13.   )
  14.   ;;(setq fil '((-4 . "<or") (-4 . "<and") (0 . "LWPOLYLINE") (90 . 2) (-4 . "and>") (0 . "*LINE,ARC") (-4 . "or>")))
  15.   (cond
  16.     ((and
  17.        (setq p1 (getpoint))
  18.        (setq p2 (getpoint p1))
  19.        (setq ss (ssget "_C" p1 p2 '((0 . "*LINE,ARC"))))
  20.      )

  21.      (vl-load-com)
  22.      (or *DOC*
  23.          (setq *DOC* (vla-get-ActiveDocument (vlax-get-acad-object)))
  24.      )
  25.      (_StartUndo *DOC*)
  26.      (HH:ayOSMode nil)
  27.      (setq cmd1 (getvar "cmdecho"))
  28.      (setvar "cmdecho" 0)
  29.      (VL-CATCH-ALL-APPLY 'HH::pmDo2 (list p1 p2 ss))
  30.      (setvar "cmdecho" cmd1)
  31.      (HH:ayOSMode T)
  32.      (_EndUndo *DOC*)
  33.      (gc)
  34.     )
  35.   )
  36.   (princ)
  37. )

  38. (defun HH::pmDo2 (p1 p2 ss / ANG BOX DIST EP EP0 LENT1 LENT2 PTS SP SP0)
  39.   (setq pts (HH::pmDo1 p1 p2 ss))
  40.   (setq sp (car pts))
  41.   (setq Ep (cadr pts))
  42.   (setq dist (* (distance sp Ep) 0.2))
  43.   (setq ang (angle sp Ep))
  44.   (setq sp0 (polar p1 (+ ang (* pi 0.5)) dist))
  45.   (setq Ep0 (polar p2 (+ ang (* pi 0.5)) dist))
  46.   (cond        ((and (setq pts (HH::pmDo1 sp0 Ep0 ss)) (equal (length pts) 2))
  47.          (HH::pmDo2P (car pts) (cadr pts))
  48.          (setq Lent1 (entlast))
  49.         )
  50.   )
  51.   
  52.   (setq ang (+ ang pi))
  53.   (setq sp0 (polar p1 (+ ang (* pi 0.5)) dist))
  54.   (setq Ep0 (polar p2 (+ ang (* pi 0.5)) dist))
  55.   (cond        ((and (setq pts (HH::pmDo1 sp0 Ep0 ss)) (equal (length pts) 2))
  56.          (HH::pmDo2P (cadr pts) (car pts))
  57.          (setq Lent2 (entlast))
  58.         )
  59.   )
  60.   ;;(setq box (* (pixel_unit) (getvar "pickbox") 0.5))
  61.   (setq sp (osnap sp "_nea"))
  62.   (setq sp (list (ssname (ssget "_C" sp sp '((0 . "*LINE,ARC"))) 0) sp))
  63.   ;;(setq sp (list (ssname (ssget "_C" (mapcar '- sp (list box box)) (mapcar '+ sp (list box box)) '((0 . "*LINE"))) 0) sp))
  64.   (cond ((and Lent1 Lent2 sp) (command "_.trim" Lent1 Lent2 "" sp "")))
  65.   (setq Ep (osnap Ep "_nea"))
  66.   (setq Ep (list (ssname (ssget "_C" Ep Ep '((0 . "*LINE,ARC"))) 0) Ep))
  67.   ;;(setq Ep (list (ssname (ssget "_C" (mapcar '- Ep (list box box)) (mapcar '+ Ep (list box box)) '((0 . "*LINE"))) 0) Ep))
  68.   ;;(cond ((and Lent1 Lent2 sp Ep) (command "_.trim" Lent1 Lent2 "" sp Ep "")));这个两步执行
  69.   (cond ((and Lent1 Lent2 Ep) (command "_.trim" Lent1 Lent2 "" Ep "")))
  70. )
  71. ;;两点之间所有交点的最远两点
  72. (defun HH::pmDo1 (p1 p2 ss / E EL N PTS)
  73.   (setq eL (EntmakeLine p1 p2))
  74.   (repeat (setq n (sslength ss))
  75.     (setq e (ssname ss (setq n (1- n))))
  76.     (setq pts (append pts (HH:TwoEntsInters e eL 0)))
  77.   )
  78.   (entdel eL)
  79.   (car (MJ:lensort pts))
  80. )
  81. ;;两点画剖面线
  82. (defun HH::pmDo2P1 (p1 p2 / AN DIST PT)
  83.   (setq dist (distance p1 p2))
  84.   (setq an (HH::ANGLEFORMAT (angle p1 p2) 2))
  85.   (setq an (* 180 (/ ang pi)))  
  86.   (setq pt (polar p1 ang (* 0.5 dist)))
  87.   (command "_.pline" p1 "a" "d" (+ an -45) pt p2 "d" (+ an 180 45) pt "")
  88. )
  89. (defun HH::pmDo2P (p1 p2 / P3 X Y)
  90.   (setq p3 (mapcar '(lambda (x y) (* (+ x y) 0.5)) p1 p2))
  91.   (entmakeX (list
  92.               '(0 . "LWPOLYLINE")
  93.               '(100 . "AcDbEntity")
  94.               '(100 . "AcDbPolyline")
  95.               '(90 . 4)
  96.               (cons 10 p1)
  97.               '(42 . 0.414214)
  98.               (cons 10 p3)
  99.               '(42 . -0.414214)
  100.               (cons 10 p2)
  101.               '(42 . -0.414214)
  102.               (cons 10 p3)
  103.               '(42 . -0.414214)
  104.             )
  105.   )
  106. )
  107. ;;167.1 [功能] Entmake直线
  108. (defun EntmakeLine (p1 p2)
  109.   (entmakeX (list '(0 . "LINE") (cons 10 p1) (cons 11 p2)))
  110. )
  111. ;;13 [功能] 求点集中最远,最近点表   ;By 无痕
  112. ;:(最远两点 最近两点)
  113. ;;示例(MJ:lensort (while (setq pt(getpoint)) (setq plst (cons pt plst)))))
  114. ;;(((14857.8 -599.932 0.0) (26695.2 -3687.68 0.0)) ((15733.8 -3687.68 0.0) (15630.7 -3842.07 0.0)))
  115. (defun MJ:lensort (ptlst / pt d maxd mind maxl minl)
  116.   (setq        minl (list (car ptlst) (cadr ptlst))
  117.         maxd 0
  118.         mind (apply 'distance minl)
  119.   )
  120.   (while (setq pt    (car ptlst)
  121.                ptlst (cdr ptlst)
  122.          )
  123.     (foreach n ptlst
  124.       (setq d (distance n pt))
  125.       (cond ((< maxd d)
  126.              (setq maxd        d
  127.                    maxl        (list n pt)
  128.              )
  129.             )
  130.             ((> mind d)
  131.              (setq mind        d
  132.                    minl        (list n pt)
  133.              )
  134.             )
  135.       )
  136.     )
  137.   )
  138.   (list maxl minl)
  139. )
  140. ;;http://bbs.xdcad.net/thread-673425-1-1.html
  141. ;;[功能] 两对象交点列表(也可能是虚交点)
  142. ;;Flag:
  143. ;;acextendnone 0 不延伸
  144. ;;acextendthisentity 1 延伸基准对象
  145. ;;acextendotherentity 2
  146. ;;acextendboth 3
  147. ;;示例(HH:TwoEntsInters (car(entsel)) (car(entsel)) 0)
  148. (defun HH:TwoEntsInters        (e1 e2 Flag / OBJ1 OBJ2 PTL PTS)
  149.   (setq obj1 (vla-copy (vlax-ename->vla-object e1)))
  150.   (setq obj2 (vla-copy (vlax-ename->vla-object e2)))
  151.   (XX:LeftPick:LineZto0Ent (vlax-vla-object->ename obj1))
  152.   (XX:LeftPick:LineZto0Ent (vlax-vla-object->ename obj2))
  153.   (setq pts (vlax-invoke obj1 'Intersectwith obj2 Flag))
  154.   (VL-CATCH-ALL-APPLY 'vla-Delete (list obj1))
  155.   (VL-CATCH-ALL-APPLY 'vla-Delete (list obj2))
  156.   (while pts
  157.     (setq ptl (cons (list (car pts) (cadr pts)) ptl))
  158.     (setq pts (cdddr pts))
  159.   )
  160.   ptl
  161. )

  162. ;;限定角度在0~C*pi之间(弧度)
  163. ;;C=1,pi; c=0.5,pi/2; c=2,2pi
  164. (defun HH::ANGLEFORMAT (A C)
  165.   (setq B (* pi C))
  166.   (while (< A 0)
  167.     (SETQ A (+ A B))
  168.   )
  169.   (while (>= A B)
  170.     (SETQ A (- A B))
  171.   )
  172.   (cond ((EQUAL A B 1.0e-008) (SETQ A 0.0)))
  173.   A
  174. )
  175. ;;(setq box (pixel_unit)) (setq p (getpoint))
  176. ;;(command "_.rectang" (mapcar '- p (list box box)) (mapcar '+ p (list box box)))
  177. (defun pixel_unit (/ x y x1 y1)
  178.   (setq        y  (getvar "viewsize")
  179.         x1 (car (getvar "screensize"))
  180.         y1 (cadr (getvar "screensize"))
  181.         x  (* y (/ x1 y1))
  182.   )
  183.   (max (abs (/ y y1))
  184.        (abs (/ x x1))
  185.   )
  186. )
lucas3 发表于 2014-5-2 14:48
长老,说好的画管子的呢?

点评

黄大师的代码姗姗来迟啊,我现在用的E大的  详情 回复 发表于 2014-9-28 10:56
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 3199个

财富等级: 富可敌国

发表于 2014-9-28 10:56:57 | 显示全部楼层

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-21 16:27 , Processed in 0.194421 second(s), 45 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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