明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 32007|回复: 129

【悬赏10明经币】求与线平齐小程序

    [复制链接]
发表于 2011-10-21 00:04 | 显示全部楼层 |阅读模式
10明经币
本帖最后由 yjr111 于 2011-10-25 12:45 编辑

如题,程序效果见图片,这个程序超好用,可惜主程序要安装,与公司程序冲突,希望能得到相类的程序源码。。。

在22楼是本人在各位高人指点下弄出来的,有图有源码!欢迎下载!



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

最佳答案

点评

问题都搞定了,悬赏还不送出去!这样是不行的哈!注意信用哦!  发表于 2011-10-25 11:57
楼主的悬赏超值啊,得远大于失。  发表于 2011-10-25 07:29
"觉得好,就打赏"
还没有人打赏,支持一下

本帖被以下淘专辑推荐:

发表于 2011-10-21 00:04 | 显示全部楼层
本帖最后由 Gu_xl 于 2011-10-22 17:20 编辑

本帖子中包含更多资源

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

x

点评

能增加框选功能吗  发表于 2018-8-20 17:05
版主强大  发表于 2012-3-15 13:18
非常合适!严重请求版主能够提供源码,以供深刻学习!  发表于 2011-10-22 18:06
版主强大!  发表于 2011-10-22 16:20

评分

参与人数 2明经币 +1 金钱 +20 收起 理由
xiaxiang + 1 好程序,强烈请求GU版主分享代码!
gcho + 20 很给力!

查看全部评分

回复

使用道具 举报

发表于 2011-10-21 00:40 | 显示全部楼层
楼主不妨参考这个帖子.
http://lee-mac.com/objectalign.html

点评

版主强大  发表于 2012-3-15 13:18

评分

参与人数 1明经币 +1 金钱 +10 收起 理由
yjr111 + 1 + 10 见多识广!

查看全部评分

回复

使用道具 举报

发表于 2011-10-21 08:26 | 显示全部楼层
演示的是什么软件,我来装个看看,这个是还有预览功能的程序
回复

使用道具 举报

 楼主| 发表于 2011-10-21 15:09 | 显示全部楼层
本帖最后由 yjr111 于 2011-10-21 15:22 编辑
highflybir 发表于 2011-10-21 00:40
楼主不妨参考这个帖子.
http://lee-mac.com/objectalign.html


谢谢版主指点,不过LEE这个程序有个我最想要的功能不能满足:当我点在矩形短边的时候,应该矩形短边与线平齐,智能切换,同时离曲线位置能够自由选择,不需要一定在曲线上。。。版主是否能修改一下?谢谢!
回复

使用道具 举报

发表于 2011-10-21 15:35 | 显示全部楼层
自己修改一下,应该可以满足你的需要
回复

使用道具 举报

发表于 2011-10-21 15:40 | 显示全部楼层
本帖最后由 Andyhon 于 2011-10-21 15:42 编辑

建议楼主提供配合调试用的样本文件(*.Dwg)
回复

使用道具 举报

 楼主| 发表于 2011-10-21 17:37 | 显示全部楼层
Andyhon 发表于 2011-10-21 15:40
建议楼主提供配合调试用的样本文件(*.Dwg)



本帖子中包含更多资源

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

x
回复

使用道具 举报

发表于 2011-10-21 19:51 | 显示全部楼层
这个跟那个标粗糙度的差不多,期待高手的解决。
回复

使用道具 举报

 楼主| 发表于 2011-10-21 21:49 | 显示全部楼层
本帖最后由 yjr111 于 2011-10-22 21:16 编辑



除了块内矩形选边外,其他问题基本都处理了一下,效果没有高手那么炫,不过已经可以满足自己的使用需求,代码实时更新,有兴趣的可以试试。。。



  1. (defun c:yxpq(/ e1 e2 ee s11 s22 point_e1 vla_e1 vla_e2 dxf_10 p1 jux_ang e1_ang1 e1_ang2 hudu1
  2.           JIAODU1 HUDU2 JIAODU2 JIAODU3)
  3.   (vl-load-com)
  4.   (setvar "cmdecho" 0)
  5.   (setq e1 (car(setq ee(nentsel"\n 请选择要对齐的物体:"))))
  6.   (setq s11 (entget e1))
  7.   (setq point_e1 (cdr(assoc 10 s11)))
  8.   (setq e2 (car(setq eee(entsel"\n 请选择物体要对齐的曲线"))))
  9.   (setq s22 (entget e2))
  10.   
  11. ;;;;;;;;;;;取得点击点处最近的在实体或曲线的位置;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  12.      (setq vla_e1(vlax-ename->vla-object e1))
  13.        (setq vla_e2(vlax-ename->vla-object e2))
  14.       
  15. (if(WCMATCH(cdr(assoc 0 s11))"*POLYLINE")
  16.   (progn
  17.   (setq p1(vlax-curve-getclosestpointto vla_e1 (cadr ee)));;;;;实体点击点若不在实体上,找到在实体上最近的点
  18.   
  19.      (SETQ dxf_10 (massoc 10 s11))
  20.        (setq jux_ang(angle (nth 0 dxf_10)(nth 1 dxf_10)))
  21.      (setq e1_ang1(angle (nth 0 dxf_10) p1))
  22.      (setq e1_ang2(angle p1(nth 2 dxf_10) ) )
  23.    
  24.        (if(= e1_ang1 pi)(setq e1_ang1 0.0))
  25.      (if(= e1_ang2 pi)(setq e1_ang2 0.0))
  26.      (if(= jux_ang pi)(setq jux_ang 0.0))

  27.    )
  28. )   
  29. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;取得待对齐的实体的旋转角度;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  30.    (cond((=(cdr(assoc 0 s11))"LINE") (setq hudu1 (ATAN(/(-(cADdr(assoc 10 s11))
  31.             (cADdr(assoc 11 s11)))(-(cAdr(assoc 10 s11))(cAdr(assoc 11 s11)))))))

  32.       ((WCMATCH(cdr(assoc 0 s11))"*POLYLINE,ARC")(if(or(equal jux_ANG e1_ang1 0.001)(equal jux_ANG e1_ang2 0.001))
  33.                 (setq hudu1  jux_ang )
  34.             
  35.           (setq hudu1  (+ jux_ang (* 0.5 pi) ))))
  36.             
  37.       ((WCMATCH(cdr(assoc 0 s11))"CIRCLE,SPLINE,ELLIPSE,XLINE")(setq hudu1  0 ))
  38.                                 
  39.       (t (setq hudu1 (cdr(assoc 50 s11))))         
  40.     )  

  41.   (SETQ JIAODU1 (* (/ HUDU1 PI)180))
  42. ;;;;;;;;;;;;;;;;;;;;;;;;;;返回关联表中相同组码保存的信息,明经lsp QQ群信息;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  43. (defun massoc (code xlist / x nlist)
  44.   (setq nlist nil)
  45.   (foreach x xlist
  46.     (if (eq code (car x))
  47.       (setq nlist (cons (cdr x) nlist))
  48.     )
  49.   )
  50.   (reverse nlist)
  51. )

  52. ;;;;;;;;;;;;;;;;;;;;;;;;取得对齐直线的旋转角度;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  53.   (COND((=(cdr(assoc 0 s22))"LINE") (if (/= (setq chushu1(-(cAdr(assoc 10 s22))(cAdr(assoc 11 s22))))0)
  54.                                        (setq hudu2 (ATAN(/ (-(cADdr(assoc 10 s22))  (cADdr(assoc 11 s22))) chushu1)))
  55.                            (setq hudu2 (* 0.5 pi))))

  56.      ((WCMATCH(cdr(assoc 0 s22))"*POLYLINE,ARC,SPLINE")(setq p2(vlax-curve-getclosestpointto vla_e2 (cadr eee)));;;;;曲线点击点若不在曲线上,找到在曲线上最近的点
  57.                                        (setq p3(vlax-curve-getclosestpointto vla_e2 (list (+(car p2)0.001)(+(cadr p2)0.001)(+(caddr p2)0.0))))
  58.                                        (setq hudu2 (angle p2 p3)))                     
  59.   )                              
  60.                               
  61.   (SETQ JIAODU2 (* (/ HUDU2 PI)180))

  62. ;;;;;;;;;;;;;;旋转平移;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  63.   (IF (> (LENGTH ee)2) (PROGN (SETQ e1 (CAAR (REVERSE ee)))
  64.                 (setq point_e1 (cdr(assoc 10 (ENTGET e1)))
  65.                  jiaodu3 (*(/(cdr(assoc 50 (ENTGET e1)))PI)180))))
  66.     (cond ((and(and(and e1 e2)(< (LENGTH ee)3))(WCMATCH(cdr(assoc 0 s11))"*POLYLINE"))
  67.      (command "_.rotate" e1 "" p1 (- jiaodu2 jiaodu1))  
  68.      (command  "_.MOVE" e1 ""  p1  pause))

  69.       ((and(and e1 e2)(> (LENGTH ee)2))
  70.      (command "_.rotate" e1 "" point_e1 (- jiaodu2 jiaodu1 jiaodu3))  
  71.      (command  "_.MOVE" e1 ""  point_e1  pause))
  72.   
  73.       (t(command "_.rotate" e1 "" point_e1 (- jiaodu2 jiaodu1 ))  
  74.      (command  "_.MOVE" e1 ""  point_e1  pause))
  75.   
  76.   )
  77.   (princ)
  78. )

本帖子中包含更多资源

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

x

点评

垂直线,提示:除数为零  发表于 2019-10-28 23:49
能增加框选功能吗  发表于 2018-8-20 17:05
请问,如何调整到可以框选物体,多谢啊!  发表于 2012-12-16 15:30
强大  发表于 2012-3-15 13:41
对于块内物体的选择,你可以采用nentselp这个函数选择块内实体,它类似与nentsel函数,同时还返回一个4×4的转换矩阵,你去查看一下该函数的帮助,同时你还要掌握矩阵转换的的知识!经过努力学习,你自己可以搞定的哦   发表于 2011-10-22 20:05
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-25 18:59 , Processed in 3.616785 second(s), 32 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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