明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: langjs

[源码] 腰形孔

  [复制链接]
发表于 2021-12-7 12:16:59 | 显示全部楼层
Thanks for sharing <3
发表于 2021-12-7 16:55:47 | 显示全部楼层
谢谢大师的分享,非常实用,怎么能把中心线去掉呢?
发表于 2021-12-7 20:08:15 | 显示全部楼层
本帖最后由 尘缘一生 于 2021-12-7 20:45 编辑

借郎大师帖子,发下我用的,虽然这个对我专业不大用,但也考虑做了点工作,对于格式画线,请研究小菜版的智能中心线部分可也,这部分就是中线线的一部分fy_lineformat ,可以全部注销不用,我的是非动态,三点定位方式。
  • ;;**************三点椭圆孔****************
  • (defun c:slot (/ w ang1 bp1 bp2 p1 p2 p3 p4 cp1 cp2 cp3 cp4 cp5 cp6 oldorh gj_oo)
  •   (setq oldorh (getvar "ORTHOMODE"))
  •   (setq gj_oo (getvar "osmode"))
  •   (setvar "ORTHOMODE" 1) ;;正交打开
  •   (setq bp1 (getpoint "\n 输入长圆孔第一个中心点:")
  •     bp2 (getpoint bp1 "\n 输入长圆孔第二个中心点:")
  •     bp3 (getpoint bp2 "\n 拉出长圆孔半个宽度点:")
  •     ang1 (angle bp1 bp2)
  •     w (distance bp2 bp3)
  •   )
  •   (setvar "cmdecho" 0)
  •   (cykong bp1 bp2 w)
  •   (setq w (/ (* 5 w) 3))
  •   (setq cp1 (polar bp1 (+ ang1 pi2) w)
  •     cp2 (polar bp1 (+ ang1 3pi2) w)
  •     cp3 (polar bp2 (+ ang1 pi2) w)
  •     cp4 (polar bp2 (+ ang1 3pi2) w)
  •     cp5 (polar bp1 (+ ang1 pi) w)
  •     cp6 (polar bp2 ang1 w)
  •   );求得长圆孔中心轴线的六个关键点
  •   ;;------绘制长圆孔中心线------
  •   (fy_lineformat (makeline cp1 cp2) "中心线" "CENTER" 0.4 6)
  •   (fy_lineformat (makeline cp3 cp4) "中心线" "CENTER" 0.4 6)
  •   (fy_lineformat (makeline cp5 cp6) "中心线" "CENTER" 0.4 6)
  •   (setvar "osmode" gj_oo)
  •   (setvar "ORTHOMODE" oldorh)
  •   (princ)
  • )
  • ;;画长圆孔---(一级)----------
  • (defun cykong (bp1 bp2 w / ang p1 p2 p3 p4)
  •   (setq
  •     ang (angle bp1 bp2)
  •     p1 (polar bp1 (+ ang pi2) w)
  •     p2 (polar bp1 (+ ang 3pi2) w)
  •     p3 (polar bp2 (+ ang pi2) w)
  •     p4 (polar bp2 (+ ang 3pi2) w)
  •   )
  •   (entmake (list '(0 . "LWPOLYLINE") '(100 . "AcDbEntity") '(67 . 0) '(100 . "AcDbPolyline") '(90 . 5) '(70 . 1) (cons 10 p2) (cons 42 0)
  •              (cons 10 p4) (cons 42 1) (cons 10 p3)(cons 42 0) (cons 10 p1) (cons 42 1)(cons 10 p2) (cons 42 1) '(210 0.0 0.0 1.0))
  •   )
  • )
  • ;;--------格式画线----(一级)--------
  • ;;参数:图元名 图层 线型 比例因子 颜色
  • (defun fy_lineformat (enam lay lt sc col / qm40 obj)
  •   (cond
  •     ((= lay nil)
  •       (setq lay (dxf1 enam 8))
  •     )
  •     ((= lt nil)
  •       (setq lt (ss-linetype enam))
  •     )
  •     ((= col nil)
  •       (setq col (ss-getcolor enam))
  •     )
  •   )
  •   (setq obj (en2obj enam))
  •   (vla-put-layer obj lay)
  •   (vla-put-Linetype obj lt)
  •   (vla-put-Color obj col)
  •   (setq qm40 (dxf1 (tblsearch "ltype" lt) 40))
  •   (if (and (/= qm40 0) (/= sc 0))
  •     (vla-put-LinetypeScale obj sc)
  •     (vla-put-LinetypeScale obj (* 0.01 (getvar "DIMLFAC")))
  •   )
  •   (vla-update obj)
  • )
  • ;-------生成一条line  ----(一级)------------------------
  • ;;参数:pt1:起点,pt2:终点,均为三维点,即(x y z)
  • (defun makeline (pt1 pt2)
  •   (entmakex (list '(0 . "line") (cons 10 pt1) (cons 11 pt2)))
  • )



评分

参与人数 1明经币 +1 收起 理由
USER2128 + 1 赞一个!

查看全部评分

回复 支持 2 反对 0

使用道具 举报

发表于 2021-12-7 22:42:40 | 显示全部楼层
谢谢大师的分享!
发表于 2021-12-8 08:53:59 | 显示全部楼层
谢谢大师的分享!
很棒!
 楼主| 发表于 2021-12-9 14:40:59 来自手机 | 显示全部楼层
xiao88gang 发表于 2021-12-7 16:55
谢谢大师的分享,非常实用,怎么能把中心线去掉呢?

把所有类似(entmake (list '(0 . "line") (cons 8 "03中心线层") (cons 10 (polar pt1 (+ r (* 0.5 pi)) (+ d dbl)))的语句删除
发表于 2021-12-9 20:55:44 | 显示全部楼层
感谢大师分享!
发表于 2021-12-11 15:51:09 | 显示全部楼层
真的不错,很实用。但是如果能先输入数据,最后选点,可能会更好。点是腰孔的中心。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-10-1 22:28 , Processed in 0.171068 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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