QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

全站
goto3d 说: 此次SW竞赛获奖名单公布如下,抱歉晚了,版主最近太忙:一等奖:塔山817;二等奖:a9041、飞鱼;三等奖:wx_dfA5IKla、xwj960414、bzlgl、hklecon;请以上各位和版主联系,领取奖金!!!
2022-03-11
全站
goto3d 说: 在线网校新上线表哥同事(Mastercam2022)+虞为民版大(inventor2022)的最新课程,来围观吧!
2021-06-26
查看: 2098|回复: 5
收起左侧

[求助] 求一个指定长度的捕捉方法。

[复制链接]
发表于 2009-11-17 17:48:49 | 显示全部楼层 |阅读模式

马上注册,结识高手,享用更多资源,轻松玩转三维网社区。

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

x
cad捕捉方法里面没有指定长度捕捉的设置。
' D9 ]7 b' Q3 m! H3 K7 S6 ?8 l
例如:一个直角三角形里,高22.6,底长55.8,求在三角形中能捕捉在长度为10的位置画上一条竖线,把三角形分成两个。( Y6 P" W) Q4 q" W
5 _, B' P& l& N4 X7 u0 y
普通方法做不出来,只有求助二次开发。; z5 f$ \$ p3 D) x: R
6 Y7 [+ |8 C, O) i6 I! i
[ 本帖最后由 pengqidong 于 2009-11-17 18:25 编辑 ]
发表于 2009-11-18 14:55:38 | 显示全部楼层
你这个条件给的挺宽松,这还用二次开发吗?随便画一下就出来了呀!为什么要用捕捉?
 楼主| 发表于 2009-11-18 15:23:12 | 显示全部楼层

回复 2# xxxhhhqqq 的帖子

忘了一个重要的,就是有很多不规则的三角形要这样区分,上面的只是一个小例子。
发表于 2009-12-31 23:27:36 | 显示全部楼层
在要捕捉的线上画条与之┷它的直线偏移就可以了
发表于 2010-1-2 10:25:18 | 显示全部楼层
给个调试用图(*.dwg)吧
) F6 T/ N7 T4 `4 w% v- e2 v  x须有几个图例
% a+ m) Q3 `$ O1 a% _3 Z程序执行后取得资料的方式与顺序又是如何% T' S( r$ X, t' K$ F- z# w) Z
可能的例外是什么 .....9 t% ]! z) O3 B; ]5 B
因为程序只是个瞎子,更不是Daemon
发表于 2010-1-2 12:23:07 | 显示全部楼层
所谓角度捕捉,是指当十字光标在某一角度α的一定范围内选取一点时,该点自动落在该α角度线上;当我们设定捕捉角度为α时,将会以基准点作为原点、自X轴正方向出发,将整个屏幕划分为[360/α]个区间,则NXα角度就是角度捕捉线,其中,0≤N≤[360/α],[360/α]表示不大于360/α的整数。
, q& [9 ]# Z  e3 K/ g# ?3 T. b3 w/ O8 h9 b( |. h/ B$ g: m2 W
  所谓长度捕捉,是在角度捕捉的基础上,在某一角度线上有一系列捕捉点,该系列点离基准点的距离为捕捉长度的正整数倍,当选取直线上的一点时,落点自动落到离其最近的捕捉点上。 + l% t3 S5 g0 r& ?' ~6 W( l
) `- T, r$ g2 Y( M; Y4 A8 }' X
  实现特定角度和长度捕捉的关键点是:当十字光标(即十字交叉线)移动时,程序要随时跟踪其交叉点的位置,并将该位置与用户所设定的捕捉角度与长度对应起来,从而计算出在该角度上的落点。 3 P  g, \6 n5 \$ @# s# k

( D' |0 s# @+ V6 R  以下举例说明该两个捕捉的实现过程: / c1 Z6 g8 _& p* q8 u

" H8 s  D$ {. e0 o, s. k  假定捕捉角度为α=30°,捕捉长度为L。
' y! |6 ?0 \& |4 P  b, n2 f+ E' q$ N+ m
  当十字光标在任意的某一区间内移动时,比如在第5区间(120°~150 °)内移动时,此时,落点只能在120°或150°线上(该线在图中并不直接显示),该两根角度线的中心线为135°。当十字光标的中心点处在120°~135°之间时, 则落点应在120°线上,该落点的具体位置为由十字光标的中心点向120°线作垂线来获得,其交点D(称为垂点)即为落点,为直观起见,此时由基准点(此处为O点)向落点作一橡筋拖曳线,该橡筋拖曳线随十字光标的移动而相应移动,显示出拖动过程(见图1);同样,当十字光标的中心点处在135°~150°之间时,则落点应在150°线上,并显示相应的橡筋拖曳线。该橡筋拖曳线并不是真正的线段, 只是用XOR墨水绘制的一个向量,当用XOR墨水重新绘制一遍该向量时,该向量将从屏幕上消失,这就是本程序实现光标拖动的原理。 / y& O( }4 s0 l) P( ]5 W
7 r) H4 s" [! u, [5 B
  落点落在某一捕捉角度线上时,还得落在捕捉长度L 的整数倍的点(称为捕捉点)上,还是针对图1,其垂点必然处于某两个捕捉点A与B之间,设A与B的中点为C,当D处于A与C之间时,落点应为A;当D处于C与B之间时,落点应为B (见图1)。其中:
+ @- E; |' I) a. H6 n$ y$ @2 }! k3 N9 u& Q+ P& K/ m
 -- -- 5 _7 ]; f/ G0 `$ {) e
2 |- z# v& O! R$ a
 OA = n XL ; OB = (n + 1) XL
" i: S* F+ V0 V3 F) y& w* E( T5 N
2 }  E& v! F  @# t8 |% h n: 非负整数。 % j: n& u' z! H' ~) a: v
8 q6 ^0 r0 v5 m0 T
 L: 捕捉长度。 此时,程序通过一定的操作将在屏幕的最上面的坐标提示行准确地显示落点相对基准点的偏移长度和偏移角度。用户可以滑动鼠标准确捕捉到目标点。
3 n8 e" U# ]+ v' t+ ?0 |: v
5 `! l9 {) V& @3 O* V至此,已实现某些特定角度及长度的捕捉。为了满足在程序执行过程中能随时更改捕捉角度和捕捉长度的需要,本程序还增加了相应的模块;另外,本程序中嵌入了窗口放缩功能模块,通过点取下拉菜单中窗口及漫游子菜单,方便了各种作图的需要。
+ N3 _2 z! k( S& q9 N( f' @% e7 ~& c- t  I& u" W0 I  z6 N
三、源程序清单 2 u7 V  ^: a/ m2 @$ {
7 v( y% \" W" l/ |2 l
 ;; OS.LSP源程序 6 j7 C7 N2 D2 g& c

  [4 L- C& T$ ?' F' r/ M- ? ;;err(),出错处理子程序
: G2 k- {3 c* b' L8 p7 d3 a
7 g2 j" ?7 A5 v  J) ?, X% A1 u6 ^2 O# v (defun err ( msg) 8 W$ g/ I5 }2 s9 g6 g
' M! ]- o2 N6 @7 V  s( `: U+ u
  (if (/= msg "Function cancelled")
& u5 g# n* S% \' A0 D* C
4 }' ]+ D6 m7 [7 j7 F9 @: D  (princ(strcat "\nError:" msg)) ;打印错误内容
4 o; L' O* w* h6 a1 k- E9 C1 x: _( [3 q+ X- P1 K! D) T/ `* z/ P
  ) ;for if
- c4 |  d$ K! m8 x
' s! z! }% P! R3 ]3 g- j  (setq *error* olderr) % c3 n6 n. V' M  E; O
2 s! Q* W; m! O& I( ~# B# V
  (setvar "cmdecho" scmd) ) B" j1 \1 S7 H0 k; `
9 F. n. l  \. |# ^$ Z5 F  L' O+ [
  (setvar "osmode" cosmode) 3 c0 C* H5 p4 {

9 p/ v& B0 S7 b" L" r  (setvar "coords" ccoords) ! O* {5 [2 _7 U7 X

2 F& \' ]6 I8 T) l6 j  (princ "n\n\t --多谢使用角度捕捉2.0版,程序非正常结束--!\n")
  O- W# A* A, Z7 l) E) f3 f7 N3 ?
. `- y) ]% Y# z- x  (princ) 9 s6 E% _' w( p! n2 T

" z% i. K  l, }7 l! ~ ) ;for defun err
3 I2 _2 c6 b/ p* R+ i
* D0 p" n2 P( \* u, j6 \- j+ ~ ;; ant(),设定捕捉角度子程序 % V$ ?+ e+ p8 O$ k. ?
) y7 m, C) J/ |' A6 l7 R- ~* ~
 (defun ant ( / ang0 ang1 )
: q" L1 C& a8 O8 J4 I9 {/ f3 e2 O) G) D0 ~6 q1 y4 n* A
  (setq ang0 (* an0 (/ 180 pi)) )
3 A  O- k- `0 J7 z3 P- i5 b8 N. V( l3 k# F- P' }2 y5 J0 `
  (princ (strcat "\n请输入捕捉角度:<" (rtos ang0) ">_"))
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Licensed Copyright © 2016-2020 http://www.3dportal.cn/ All Rights Reserved 京 ICP备13008828号

小黑屋|手机版|Archiver|三维网 ( 京ICP备2023026364号-1 )

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