明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1749|回复: 1

[求助]点取自动产生垂直线

[复制链接]
发表于 2009-8-26 23:55:00 | 显示全部楼层 |阅读模式

因为是找人编程,我就用程序话的语言来表达自己的意思

1 点取多义线A(A炸开后为短直线)

2 群选线B(为直线或园弧,分别为线B1,B2,B3,。。。。。。)

3 输入长度C

4 在A或其延长线上与B(包括B1,B2,B3,。。。。。。)的交点上插入直线D(包括D1,D2,D3,。。。。。。)

  D要求图层与B(包括B1,B2,B3,。。。。。。)相同,并且与A(A炸开后为短直线)垂直,插入点为D(包括D1,D2,D3,。。。。。。)之中点

 

4 删除B(包括B1,B2,B3,。。。。。。)

本帖子中包含更多资源

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

x
发表于 2009-8-31 08:41:00 | 显示全部楼层
  1. (defun c:test(/ ANGA ANGD DXFA ENTA ENTB I J LAYERD OBJA OBJB OBJD PTED PTMD PTSA PTSAB PTSD SPC SSB X TmpDstC)
  2.   (vl-load-com)
  3.   (setq spc (vla-get-modelspace (vla-get-activedocument (vlax-get-acad-object))))
  4.   (while (setq EntA (entsel "\n选择短直线A或空选退出: "))
  5.     (setq DxfA (entget (car EntA))
  6.    PtsA nil
  7.    )
  8.     (if (= (cdr (assoc 0 DxfA)) "LWPOLYLINE")
  9.       (progn
  10. (mapcar '(lambda(x) (if (= (car x) 10) (setq PtsA (append PtsA (list (cdr x))))))  DxfA)
  11. (if (= (length PtsA) 2)
  12.    (progn
  13.      (setq AngA (angle (car PtsA)(cadr PtsA))
  14.     AngD (+ AngA (/ pi 2))
  15.     )
  16.      (prompt "\n选择对象B: ")
  17.      (if (setq SSB (ssget '((0 . "LINE,ARC"))))
  18.        (progn
  19.   (if (<= DstC 0) (setq DstC 1))
  20.   (setq TmpDstC (getdist (strcat "\n输入长度C: <" (rtos DstC) "> ")))
  21.   (if (> TmpDstC 0) (setq DstC TmpDstC))
  22.   (setq i 0)
  23.   (repeat (sslength SSB)
  24.     (setq EntB (ssname SSB i)
  25.    objB (vlax-ename->vla-object EntB)
  26.    objA (vlax-ename->vla-object (car EntA))
  27.    PtsAB (vlax-invoke objA 'IntersectWith objB acExtendThisEntity)
  28.    j 0
  29.    LayerD (vla-get-layer objB)
  30.    )
  31.     (repeat (/ (length PtsAB) 3)
  32.       (setq PtMD (list (nth j PtsAB) (nth (+ j 1) PtsAB)(nth (+ j 2) PtsAB))
  33.      PtSD (polar PtMD AngD (/ DstC 2))
  34.      PtED (polar PtMD (+ AngD pi) (/ DstC 2))
  35.      objD (vla-addline spc (vlax-3d-point PtSD) (vlax-3d-point PtED))
  36.      j (1+ j)
  37.      )
  38.       (vla-put-layer objD LayerD)
  39.       )
  40.     (vla-erase objB)
  41.     (setq i (1+ i))
  42.     )
  43.   )
  44.        )
  45.      )
  46.    )
  47. )
  48.       )
  49.     )
  50.   (princ)
  51.   )
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-2-27 20:04 , Processed in 0.233143 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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