QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

全站
goto3d 说: 版主微信号:caivin811031;还未入三维微信群的小伙伴,速度加
2022-07-04
全站
goto3d 说: 此次SW竞赛获奖名单公布如下,抱歉晚了,版主最近太忙:一等奖:塔山817;二等奖:a9041、飞鱼;三等奖:wx_dfA5IKla、xwj960414、bzlgl、hklecon;请以上各位和版主联系,领取奖金!!!
2022-03-11
查看: 3893|回复: 42
收起左侧

[已解决] 现有凸轮外形,要把数据采集,有没有好的方法

[复制链接]
发表于 2014-10-22 09:23:40 | 显示全部楼层 |阅读模式

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

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

x
我现在要把这凸轮以一度一个点,来采集数据,
8 y$ F1 M* t, k  W: [) g/ K, V$ e/ j0 H我现在用的方法是以凸轮的圆心画根长线,把这长线转过一度,量长线与凸轮轮廓线交点到中心的位置来采集凸轮数据,有没有好的方法或者小软件。谢谢
发表于 2014-10-22 10:18:39 | 显示全部楼层
用2d扫描出来就可以了
发表于 2014-10-22 10:21:42 | 显示全部楼层
把那根线阵列360个,然后用CAD自带的计算器获取坐标点或极轴长度,360个数据是有点麻烦……编个软件比较好……
发表于 2014-10-22 12:03:49 | 显示全部楼层
高版本ACAD中,画出此长线后,设置凸轮的圆心为坐标原点,并设置尺寸标注关联。+ H8 a, m# a2 p- |
对交点使用约束,对直线标注极角,然后对交点进行坐标标注。
4 l8 V' t7 [$ A7 z上述设置好后,更改极角尺寸为0~360的每一个角度,此时交点的标注尺寸自动更新。, z! C9 A- C( i3 U6 _0 m- S+ w2 m
剩下的就是自己记录坐标数据了。; d+ q0 q* k5 h7 O0 e
360个,确实多了点!
 楼主| 发表于 2014-10-22 12:15:48 | 显示全部楼层
我爱用acad 发表于 2014-10-22 12:03 static/image/common/back.gif
, {2 l. u7 d6 Z( ?1 Y: H6 z高版本ACAD中,画出此长线后,设置凸轮的圆心为坐标原点,并设置尺寸标注关联。
: G8 v# v! L2 i9 M对交点使用约束,对直 ...

* X' I$ u6 E! q5 R1 ^能把怎么设置的详细说一下嘛& a( _% U* \; O9 X0 a6 C
发表于 2014-10-22 12:37:05 | 显示全部楼层
现编写了一个程序,试一下(运行时稍有点卡):
* H& i  [# p: o% P! Q( G' \- Z- h) X% `+ V$ _4 G% ~) C( c
aa.gif
1 W( H  K8 ]" p" k' c" u% X% [
发表于 2014-10-22 12:38:18 | 显示全部楼层
本帖最后由 xhq1954425 于 2014-10-23 09:05 编辑
5 Q4 }8 d+ l+ p# H2 S* R8 l; c. A% n$ ~+ ^+ O% L
(defun c:tt()
) S3 a7 b- \: y. U: O9 G$ G  (setvar "cmdecho" 0)
7 o. e, Q+ B0 _2 H- B  (setq e(car(entsel"\n选择凸轮曲线:")))
# I( T- m" r$ X9 I4 N6 {  (setq ei(car(entsel"\n选择投极轴直线:")))
: U. @. I( M0 P2 f9 C  (setq O(getpoint"\n选择凸轮中心点:"))# H, Y  F% U3 S6 Q6 B" D
  (setq X (car O) Y (cadr O)) (setq n 1)
+ U$ N9 j! k6 n- E- r: H  (repeat 3602 K0 M  g1 M& v9 o/ |
    (command "rotate" ei "" O 1)
" a& ~" f$ N5 q6 E; ^7 N& ^2 Z    (setq Point (trans (car (GetInterPointlist ei e)) 0 1))
* e/ e: \! S3 }    (command "Text" (list X Y) "5" "0" n)
1 @& |' F$ I+ |  i1 A    (command "Text" (list (+ X 20) Y) "5" "0" (rtos (car point) 2 2)). K! G: Z3 z! I2 g9 X% e
    (command "Text" (list (+ X 60) Y) "5" "0" (rtos (cadr point) 2 2));保留两位小数; v2 `2 B/ Q, N( G0 L# I
    (setq Y (+ Y 10))! j8 m7 r1 ~4 v) `# z8 k3 Y
    (setq n (+ 1 n))& ]3 A) [) M$ p, f- M+ W" u
  )  3 K  {+ U* d& I0 o, n, h0 Q6 I
  (setvar "cmdecho" 1) - h  ]& J( C; D2 ?3 d/ T5 H
  (princ)
1 r' Q* i1 F+ l6 Z9 s- a, C)
* v7 _8 C/ I7 o- Z(defun GetInterPointlist (ent_1    ent_2    /      ent1     ent2
  T  P( Y4 z* N) \- R3 t4 H     ax_ent_1 ax_ent_2 intpoints       i( q3 R& u! N% D) i* a% `. F& }
     j    k     disp     int_list# y* g6 h# n( q: m$ Z
    )+ c+ e7 L$ K% }7 ^
5 s6 {$ ?2 P, }. w4 _5 u7 y
  (setq int_list nil)
" J0 F5 _9 s% u, H5 n; ~* d* J  (setq ax_ent_1 (vlax-ename->vla-object ent_1)
8 s; X' q. g' z) S7 X ax_ent_2 (vlax-ename->vla-object ent_2)' R0 y5 r+ o, v) r2 d0 X
  )
9 d- g& w8 [& t1 y. z  (setq intpoints (vla-intersectwith ax_ent_1 ax_ent_2 acextendnone))
- A, u0 S- O: T, T5 ]  E* d  (setq intpoints (vlax-variant-value intpoints))8 F# I* H* J- y) c) ~! A5 \3 y# M
  (if (> (vlax-safearray-get-u-bound intpoints 1) 0)6 X8 m& k! u) I. t
    (progn
8 Z, m6 H& A; M3 k2 N9 K: e4 \      (setq i 0)
$ Q5 e4 c$ t& q3 I7 d/ I# Y1 T      (setq j 0)* s! A! Z+ f3 H! x+ s" x0 f
      (setq disp "")1 l4 m0 j, S  ?: L, X
      (repeat+ w1 v2 G/ ?* z" ]) J
(/ (+ 1% F/ v, n7 C' k' R" A: j4 ^
       (- (vlax-safearray-get-u-bound intpoints 1)
, [: }( Y* d5 F( q   (vlax-safearray-get-l-bound intpoints 1)$ B& U3 L8 {! K- `2 h* P2 n
       ). v  s0 p% b6 o. o, v: M/ ]+ c4 M# f
    )
5 ]; X0 x, K# q    3
3 R6 n  X# ?" g6 l. g( `7 B )
' X3 y3 f% C. \9 d, x2 k( ^  (setq5 K$ g) ~! n# K
    disp (list! Y5 Q! p1 F; X$ f  X7 B
    (vlax-safearray-get-element intpoints j)
9 F# w3 t2 a* `7 m5 i6 j/ t
6 g1 K% x; ]4 ~% X# V$ k    (vlax-safearray-get-element intpoints (+ 1 j))
  F* V* \1 V8 l) P9 d, ?, w& g. p! t+ @" ?, e5 M$ C) V
    (vlax-safearray-get-element intpoints (+ 2 j)): o8 B( I# t. Y0 t
  )
" x+ V. H" D/ I3 ]! U- E. y5 _4 C  )
& V1 N2 @& s6 z" u' z" e- I  (setq i (+ 2 i)
0 ^' ]* _# w4 x  E. J7 R        j (+ 3 j)3 z! ^; \0 ]* }# `9 e$ B: D
  )
* T% k! t. y* y4 y  (setq int_list (append int_list (list disp)))
' G+ h6 b% r% k( w& a      )2 o' t' l3 n4 V) D+ W) a7 D% b
    )4 [5 a2 W% I9 W1 a5 z
  )% m1 e; p. M4 P8 ]
  (setq int_list int_list)
! `6 V- a/ p9 m& }' ^% `/ D5 X( q)2 Z4 r5 V8 |' T1 A. n# p( A

& x1 c( p3 u0 l- a3 }$ k8 m7 ^6 f
& Z/ b, V0 i9 F8 j+ m

点评

复制代码请到#9楼  发表于 2014-10-23 10:55
发表代码请使用"插入代码"功能,否则帖子中会有乱码,不便于网友复制代码  发表于 2014-10-23 10:54
发表于 2014-10-22 13:18:39 | 显示全部楼层
本帖最后由 xhq1954425 于 2014-10-23 09:03 编辑 & ?$ w3 J. W. C0 ?, d! q* L
+ q7 ], `+ f3 l: c% `9 R
这个是保留两位小数的:& ^  S" F# |& ]/ W% x
. y6 [& Q& c% b8 X2 s' W& p
aaa.gif

评分

参与人数 1三维币 +20 收起 理由
woaishuijia + 20 技术讨论

查看全部评分

发表于 2014-10-23 10:52:52 | 显示全部楼层
本帖最后由 woaishuijia 于 2014-10-23 10:56 编辑
$ V  H' h; K9 x# |; L% m2 o6 x9 r& b( Z3 V0 U, I# [, t
代#7楼重帖代码
  1. (defun c:tt()) g# b- @1 E. X, c6 S1 J  \
  2.   (setvar "cmdecho" 0) 5 N  K! [1 T. M6 m. O4 h4 j
  3.   (setq e(car(entsel"\n选择凸轮曲线:")))  @+ e. j) A$ K: a
  4.   (setq ei(car(entsel"\n选择投极轴直线:")))
    0 _, G" K0 Q) h$ s
  5.   (setq O(getpoint"\n选择凸轮中心点:"))3 h6 R' _8 ?; y$ `7 Z
  6.   (setq X (car O) Y (cadr O)) (setq n 1), V% k3 g% P! {. l$ e9 X
  7.   (repeat 360
    % w5 A. M- ^5 U) t# m
  8.     (command "rotate" ei "" O 1)  F0 ?7 l5 b$ x9 F0 U. i
  9.     (setq Point (trans (car (GetInterPointlist ei e)) 0 1))+ }' c. g7 \8 ^7 [0 M
  10.     (command "Text" (list X Y) "5" "0" n)
    4 l- b" ^: N- F2 P
  11.     (command "Text" (list (+ X 20) Y) "5" "0" (rtos (car point) 2 2))) B  p* e) H2 c$ [  z9 h
  12.     (command "Text" (list (+ X 60) Y) "5" "0" (rtos (cadr point) 2 2));保留两位小数
    " k* s9 N& u. S% n0 ]
  13.     (setq Y (+ Y 10))
    * b  |* s8 Z& D6 B
  14.     (setq n (+ 1 n))% A* W( L# q0 ]: _9 o
  15.   )  2 b+ B3 s& |! ]7 y. x$ O: `( X
  16.   (setvar "cmdecho" 1) 5 m, J7 r" F5 N0 m
  17.   (princ)7 X. n' Y$ R6 z9 j& A
  18. )
    6 \4 b% o" j" s- o  r9 U
  19. (defun GetInterPointlist (ent_1    ent_2    /      ent1     ent23 p# o6 K1 H7 e1 z
  20.      ax_ent_1 ax_ent_2 intpoints       i. e/ q2 |$ Q0 A* R: e' A
  21.      j    k     disp     int_list
    8 M, ^! F3 [, E4 ^
  22.     )
    8 m+ @' J0 p! n, z

  23. ; U' g& p9 V' f/ [" P0 R. N5 w# Y
  24.   (setq int_list nil)( E$ o+ H6 Z- \% v
  25.   (setq ax_ent_1 (vlax-ename->vla-object ent_1)2 r% B$ B& X0 g$ U9 E. q# D  J* U
  26. ax_ent_2 (vlax-ename->vla-object ent_2)
    + u8 h, h* \" [" F
  27.   )
    ) z' F2 @" K4 b, P
  28.   (setq intpoints (vla-intersectwith ax_ent_1 ax_ent_2 acextendnone))
    & ]: r. C4 S9 a) s
  29.   (setq intpoints (vlax-variant-value intpoints))* T0 N, z9 m( P9 D5 V, }5 l
  30.   (if (> (vlax-safearray-get-u-bound intpoints 1) 0)0 d( ]' Y0 U3 z9 i1 a  n' L* o) r
  31.     (progn" j3 S# `3 g6 Y- P% T, g9 n
  32.       (setq i 0)+ \, V5 h  @$ [+ Z  p
  33.       (setq j 0)+ D; J4 v. z1 h9 Z; Q
  34.       (setq disp "")) O) T) R/ ^: ^' z+ S
  35.       (repeat
    6 K% o; u8 \" b5 g2 f! V
  36. (/ (+ 11 ~' F7 R7 G. ]$ s; @# \
  37.        (- (vlax-safearray-get-u-bound intpoints 1)8 E% Z9 \) ^# s, O
  38.    (vlax-safearray-get-l-bound intpoints 1); z' g) Y. N; d% p0 N; P* p0 B2 `
  39.        )2 X! l: g3 P& k2 @, H9 ^5 e# n
  40.     )% L7 u  |5 I" ^5 r: Z
  41.     3
    + ]' Y. o. v( @# ^" g* R$ @( b5 x0 @
  42. )
      x# e4 c! K% Z, A" n# l. W& \) ]. Z
  43.   (setq7 s+ R6 ^% _4 V2 e) T
  44.     disp (list
    % S# ^, x( r0 }2 [
  45.     (vlax-safearray-get-element intpoints j): `" F4 X4 Z. j: c8 P& W

  46. ) W7 F2 T' b5 p8 l
  47.     (vlax-safearray-get-element intpoints (+ 1 j))+ X/ O9 b5 a7 C# p4 ~1 Q
  48. 8 v' X! h" m" D3 ?3 h: F2 t/ C
  49.     (vlax-safearray-get-element intpoints (+ 2 j))% e! ~6 H4 o1 ?' q
  50.   )9 s; |0 y  @, a9 ^1 N' L
  51.   )8 c! o$ R" q! j" _$ v& B8 z6 i1 ~
  52.   (setq i (+ 2 i)4 d& d% C2 Q' ^( g  L6 f$ Y
  53.         j (+ 3 j)
    ) N1 M+ A) W. p4 ?# }& W% r+ @
  54.   )
    " b6 [" t. {# c# k, T
  55.   (setq int_list (append int_list (list disp)))
    & v/ }/ O4 U2 F$ v7 b! ~1 x* ^4 b
  56.       )! S' `2 _; r0 r8 S+ {  \5 w
  57.     )
    $ L9 M6 I; `1 Q/ L6 S
  58.   )
    + [3 m# |/ B. ?" m
  59.   (setq int_list int_list)# J! U) d" t  B# O+ G% {$ j
  60. )
    9 P9 t& \6 u/ Q- _4 H
复制代码
 楼主| 发表于 2014-10-23 21:14:11 | 显示全部楼层
xhq1954425 发表于 2014-10-22 13:18 static/image/common/back.gif3 C2 V* Z3 i' Q. D* Q: e
这个是保留两位小数的:

; k, ~) n( ]; E' K* m! ^) p谢谢,我不要坐标,我要的是每一个角度的凸轮轮廓线到中心的距离
 楼主| 发表于 2014-10-23 21:18:09 | 显示全部楼层
本帖最后由 txh007 于 2014-10-23 22:33 编辑 + d* ^) P# \- X4 X& {1 q" f5 x
woaishuijia 发表于 2014-10-23 10:52 static/image/common/back.gif
4 E  c/ o8 U+ D代#7楼重帖代码
2 S& _1 L$ y9 V* K
我想问一下,这代码怎么用呢,复制进去不会用
+ g* u' H" e9 S2 `7 o! [; K; H
发表于 2014-10-24 08:55:27 | 显示全部楼层
本帖最后由 xhq1954425 于 2014-10-24 09:06 编辑
5 }3 u" V) m7 g5 y0 C1 V, w5 g8 N# _: ^! q$ |0 o) E
要数据的话,应该将数据写入记事本中,这样便于复制使用,但不知道是不是你要的形式?也不知道你何时再进来看这个贴(好像是你发完贴之后好多天就不管了)……?先发一个改进一点的,等你批准说行了,我再发程序,也避免改来改去的:
) F7 b) p/ U1 t3 V# |& U8 i0 P* n4 ^2 I% Y& _4 a
aaa.gif
发表于 2014-10-25 09:57:13 | 显示全部楼层
楼上 搞二次开发的吗?  厉害
发表于 2014-10-25 10:27:49 | 显示全部楼层
其实最好用三坐标测量出来就可以了
发表于 2014-10-26 09:14:08 | 显示全部楼层
股海一客 发表于 2014-10-25 09:57 static/image/common/back.gif4 l# s* Q9 `- v$ w& P
楼上 搞二次开发的吗?  厉害

* S5 s6 \/ [8 ^- m7 M# F3 ~我不厉害,二次开发只是业余爱好,本人是从事制图教学工作
发表于 2014-10-26 09:45:44 | 显示全部楼层
txh007 发表于 2014-10-23 21:14 static/image/common/back.gif2 ~2 ]' l- z7 R9 g9 y' J8 y- p( R
谢谢,我不要坐标,我要的是每一个角度的凸轮轮廓线到中心的距离
' o1 I7 m1 ^+ ?- ~7 R; M
你要的不是坐标位置吗,莫名其妙
 楼主| 发表于 2014-10-27 12:33:18 | 显示全部楼层
本帖最后由 txh007 于 2014-10-27 12:39 编辑 0 H  [0 k/ p; P4 e4 k
xhq1954425 发表于 2014-10-24 08:55 static/image/common/back.gif: n& ^5 c- q& O' |* ~/ W
要数据的话,应该将数据写入记事本中,这样便于复制使用,但不知道是不是你要的形式?也不知道你何时再进来 ...
) \4 _5 d6 b3 d4 f5 f" C
就是这样的& c/ P9 i5 f, ?  ?- R7 V% l  I
就是把精度为小数点后的第4位如100.66661 i5 G2 C) J- t/ ^2 U, o5 ]
谢谢,高手啊
6 U+ d0 l/ n4 M我这两天一直在车间。没有看论坛的回复,
9 o! G/ f) C6 @. U1 O) u! _86156046是我的QQ
 楼主| 发表于 2014-10-27 12:37:30 | 显示全部楼层
zhuyi0829 发表于 2014-10-26 09:45 static/image/common/back.gif
5 ~* L) X, p' I" y4 O( l你要的不是坐标位置吗,莫名其妙

& P/ J! q- O5 P5 \我要的是极轴长度,凸轮边到中心的距离,如10度凸轮边到中心的距离为98.3253,11度凸轮边到中心的距离为98.3264,就是要的是边到中心的距离
发表于 2014-10-27 15:58:49 | 显示全部楼层
txh007 发表于 2014-10-27 12:33 static/image/common/back.gif3 B0 E6 \' ~# F9 T" _
就是这样的
0 Q. b1 W" c/ Q% ?就是把精度为小数点后的第4位如100.6666
' [# @( y/ H+ L9 p' _# M谢谢,高手啊

5 q2 [" u5 X. _2 o; p5 p你知道国内有多少设备能加工到小数点后四位的,你做凸轮你的加工设备能识别到小数点后四位?
发表于 2014-10-27 16:01:06 | 显示全部楼层
txh007 发表于 2014-10-27 12:37 static/image/common/back.gif
. D. U1 I3 ~) X' n- t/ v0 k我要的是极轴长度,凸轮边到中心的距离,如10度凸轮边到中心的距离为98.3253,11度凸轮边到中心的距离为9 ...

1 t* h6 j% A0 v: l" ^极坐标也是坐标,只是以角度加距离表示,坐标分好几种了,球坐标,笛卡尔坐标,极坐标等
 楼主| 发表于 2014-10-27 20:00:58 | 显示全部楼层
zhuyi0829 发表于 2014-10-27 15:58 static/image/common/back.gif! T0 I  }: F2 P; P7 P! J4 i+ U
你知道国内有多少设备能加工到小数点后四位的,你做凸轮你的加工设备能识别到小数点后四位?
4 u$ y* v2 _* x: z
这是我们领导的意思,我也只能照着做。其实小数点后三位就够了
 楼主| 发表于 2014-10-27 20:01:51 | 显示全部楼层
zhuyi0829 发表于 2014-10-27 16:01 static/image/common/back.gif
$ S: S" i1 K, ]5 o  ]2 y( F7 k7 u极坐标也是坐标,只是以角度加距离表示,坐标分好几种了,球坐标,笛卡尔坐标,极坐标等

- Y% j) T4 P) X( W是的,但领导要求是长度和角度
 楼主| 发表于 2014-10-27 20:02:30 | 显示全部楼层
zhuyi0829 发表于 2014-10-27 16:01 static/image/common/back.gif
0 V% P, _# r* M3 F0 F  p/ S5 K极坐标也是坐标,只是以角度加距离表示,坐标分好几种了,球坐标,笛卡尔坐标,极坐标等
! M3 R2 [  c2 b0 M& s: _
是的,但领导要求是长度和角度
发表于 2014-10-27 20:17:13 | 显示全部楼层
txh007 发表于 2014-10-27 20:01 static/image/common/back.gif
+ z3 @/ E( ^! r7 `3 w; r是的,但领导要求是长度和角度

, @( d9 D5 m5 n我觉得很奇怪,是你提问题还是你领导提问题啊,既然都是你领导的意思,叫他解决问题啊,发什么帖呢
 楼主| 发表于 2014-10-29 12:46:02 | 显示全部楼层
zhuyi0829 发表于 2014-10-27 20:17 static/image/common/back.gif% g# a% @- ?- h: c
我觉得很奇怪,是你提问题还是你领导提问题啊,既然都是你领导的意思,叫他解决问题啊,发什么帖呢
! h+ m2 Q  L1 l1 y! V9 h
我是要做具体工作的人,他嘴巴一动就行了,我总不能对领导说你做,我不会做的
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

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