QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

查看: 4826|回复: 42
收起左侧

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

[复制链接]
发表于 2014-10-22 09:23:40 | 显示全部楼层 |阅读模式 来自: 中国浙江绍兴

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

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

x
我现在要把这凸轮以一度一个点,来采集数据,  C* u3 k9 p! k; P& ~+ C. ?
我现在用的方法是以凸轮的圆心画根长线,把这长线转过一度,量长线与凸轮轮廓线交点到中心的位置来采集凸轮数据,有没有好的方法或者小软件。谢谢
发表于 2014-10-22 10:18:39 | 显示全部楼层 来自: 中国上海
用2d扫描出来就可以了
发表于 2014-10-22 10:21:42 | 显示全部楼层 来自: 中国辽宁本溪
把那根线阵列360个,然后用CAD自带的计算器获取坐标点或极轴长度,360个数据是有点麻烦……编个软件比较好……
发表于 2014-10-22 12:03:49 | 显示全部楼层 来自: 中国陕西西安
高版本ACAD中,画出此长线后,设置凸轮的圆心为坐标原点,并设置尺寸标注关联。
. [5 c" S) Q2 P  m对交点使用约束,对直线标注极角,然后对交点进行坐标标注。4 @3 V* `2 C; D/ m
上述设置好后,更改极角尺寸为0~360的每一个角度,此时交点的标注尺寸自动更新。: q4 ~4 k  B, v1 y
剩下的就是自己记录坐标数据了。
1 N' n& w7 F) R. P! ^360个,确实多了点!
 楼主| 发表于 2014-10-22 12:15:48 | 显示全部楼层 来自: 中国浙江绍兴
我爱用acad 发表于 2014-10-22 12:03 static/image/common/back.gif
2 K% [% ^) o7 X, B( Y7 o高版本ACAD中,画出此长线后,设置凸轮的圆心为坐标原点,并设置尺寸标注关联。& u. k) v9 U* A* F
对交点使用约束,对直 ...

1 }7 S9 V) c6 \# L4 n能把怎么设置的详细说一下嘛
5 L7 e2 A& |& s$ v
发表于 2014-10-22 12:37:05 | 显示全部楼层 来自: 中国辽宁本溪
现编写了一个程序,试一下(运行时稍有点卡):% b, z  G( p6 B& s" u. D
/ [! V' I/ G! f7 \
aa.gif
% w0 g1 A) j; L( H/ D+ p
发表于 2014-10-22 12:38:18 | 显示全部楼层 来自: 中国辽宁本溪
本帖最后由 xhq1954425 于 2014-10-23 09:05 编辑 + R9 y: d- q2 d( B' [
! `& D% ?+ d0 S" N% {" H
(defun c:tt()
% P/ ~) F+ w  I; A  (setvar "cmdecho" 0)
4 k8 w/ K3 p/ |! Q# y9 a  (setq e(car(entsel"\n选择凸轮曲线:")))
& L, {0 m  G1 ?& J  (setq ei(car(entsel"\n选择投极轴直线:")))
% D! s# j4 [0 N  o: E, K1 R  (setq O(getpoint"\n选择凸轮中心点:"))! G8 o- t- U0 s( s8 ?
  (setq X (car O) Y (cadr O)) (setq n 1)
+ G# B+ y1 z4 I1 `; u: }  F  (repeat 360
, q) B9 H" m1 Q0 p8 t    (command "rotate" ei "" O 1)
' j9 V8 h8 E: T, r    (setq Point (trans (car (GetInterPointlist ei e)) 0 1))
- Y0 D1 n+ {) W3 F7 X/ t    (command "Text" (list X Y) "5" "0" n)6 q1 e" r; v+ h7 t9 m, Z. H( i& v
    (command "Text" (list (+ X 20) Y) "5" "0" (rtos (car point) 2 2)). S4 S" I3 ~$ o" P: d
    (command "Text" (list (+ X 60) Y) "5" "0" (rtos (cadr point) 2 2));保留两位小数( C" q0 S# x( e$ `) l# [: e: P
    (setq Y (+ Y 10))9 z* f: o- s0 [* ^  f- y
    (setq n (+ 1 n))
% ^( r1 h) a7 H2 B8 f  )  
8 i' y: h4 g  G5 D9 n6 p  (setvar "cmdecho" 1)
5 g$ w- J& q+ P* W2 U  (princ)
- K6 P1 z! I; l5 X. D% W)
+ [) C7 h9 i, n1 a9 k) h(defun GetInterPointlist (ent_1    ent_2    /      ent1     ent2
7 d: `. z0 @1 y% @0 X     ax_ent_1 ax_ent_2 intpoints       i% Z% S+ `; r# w" w. I/ h) H9 k
     j    k     disp     int_list
9 H: b0 B: m7 h- W; A    )5 u( L0 @2 X/ \. i

0 t6 A% f! n4 Q& N+ @- }, k  (setq int_list nil)& t  ?2 ~+ B/ `- o! F! D1 R9 M3 \
  (setq ax_ent_1 (vlax-ename->vla-object ent_1)
! R; j" N5 x( X ax_ent_2 (vlax-ename->vla-object ent_2)$ l9 x, j( c/ \- J- D$ Y
  )) X. n- B# i2 D. D* r( U
  (setq intpoints (vla-intersectwith ax_ent_1 ax_ent_2 acextendnone))
) S& e7 g2 E; T) Q% \$ L" s  (setq intpoints (vlax-variant-value intpoints))
4 s7 P" V& j- T. I! r+ O7 ~  (if (> (vlax-safearray-get-u-bound intpoints 1) 0)
/ I8 ~# [; Q' ?8 c, l# t    (progn4 q! f  A: u6 ^, }3 n0 T2 V
      (setq i 0)
% x$ q" G; m4 ?" ], I: W/ G; `8 i: ?      (setq j 0)
5 z: p3 F: E5 U, ^0 j- l$ a      (setq disp "")
" B2 E4 C5 h7 N. h' p! F' `8 N3 Y      (repeat  j  n, P) h1 f: i: h- J+ J
(/ (+ 1
' u0 w) {' n: E5 [       (- (vlax-safearray-get-u-bound intpoints 1)% e. q" l) m" _. d' o0 b
   (vlax-safearray-get-l-bound intpoints 1)
' Z: T( F1 |. w( S       )
8 G, q7 q( o/ o' A4 u+ S( ]0 J9 M    )
8 n+ E" U$ S& H1 E7 A2 f8 r    3
- Z0 k4 b0 `* Z- T" d. M )
( W  ?! }# H: ~+ e. `' ]" s- P  (setq9 `) l. j3 U  \9 ]7 D$ ~
    disp (list! b  n' W  Z" R* Q' J) d
    (vlax-safearray-get-element intpoints j)9 A" k* p6 o1 W6 D! ?# ~* n9 N

8 b: O. C/ B( E9 s    (vlax-safearray-get-element intpoints (+ 1 j))7 O. v! f9 g. r4 v) I: _

9 e% G& V- X$ l6 I3 s, E) a/ r    (vlax-safearray-get-element intpoints (+ 2 j))* Y! A4 b: S$ _# h
  )( J' j6 y8 ^. l4 m" `7 m
  )
1 Q' ]! V4 E" h6 L& w' F2 j& T  (setq i (+ 2 i)2 R: l* r9 Z) W/ c
        j (+ 3 j)
8 X: ~" c- P: N% x$ _3 X  )
. g9 t& v8 P$ N  (setq int_list (append int_list (list disp)))
4 b1 y- Y2 F& ~; [: h9 Z- x      )
8 n  y. o" o8 c    )
* A9 p0 S. L# r' X  )5 ^0 z; z, K* S1 {4 X% p3 Z
  (setq int_list int_list)
  ^. f( ?1 J' X+ `$ P)/ M/ U' Z0 i& k& Z$ N. k
2 {! z: }6 {# e/ j4 n/ Q, b* S
7 J- ]8 z9 m+ B& a( G8 O( S

点评

复制代码请到#9楼  发表于 2014-10-23 10:55
发表代码请使用"插入代码"功能,否则帖子中会有乱码,不便于网友复制代码  发表于 2014-10-23 10:54
发表于 2014-10-22 13:18:39 | 显示全部楼层 来自: 中国辽宁本溪
本帖最后由 xhq1954425 于 2014-10-23 09:03 编辑
# S4 N" C& C# }' E- c( N( R1 H+ n6 a* `3 Q
这个是保留两位小数的:" P8 F+ k9 t7 v

3 y2 \# {4 ]4 C/ ? aaa.gif

评分

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

查看全部评分

发表于 2014-10-23 10:52:52 | 显示全部楼层 来自: 中国辽宁抚顺
本帖最后由 woaishuijia 于 2014-10-23 10:56 编辑
1 \. n1 J2 x3 P6 W, k
; [( Q; L) i' @# T! ?- L6 W: g! K代#7楼重帖代码
  1. (defun c:tt()
    : x9 Y* C1 O( @( [& z, B
  2.   (setvar "cmdecho" 0) 9 z, l% c- j! @/ E" s
  3.   (setq e(car(entsel"\n选择凸轮曲线:"))): U7 O6 u3 C; Q" h! v+ o) x
  4.   (setq ei(car(entsel"\n选择投极轴直线:")))- _% \$ j; B4 h& N$ _3 ~6 f3 I: t
  5.   (setq O(getpoint"\n选择凸轮中心点:"))
    8 h' e+ z/ O4 ]: l' C
  6.   (setq X (car O) Y (cadr O)) (setq n 1)" ]4 O# z8 j) y
  7.   (repeat 360
    5 d* L  B, I( \' h" T
  8.     (command "rotate" ei "" O 1)* B; I/ Y0 U2 k5 h% G
  9.     (setq Point (trans (car (GetInterPointlist ei e)) 0 1))
    . W+ s- Y, V* D$ [
  10.     (command "Text" (list X Y) "5" "0" n)
    9 w- Z7 ], Q0 k; ?/ p# ?& }- m* C
  11.     (command "Text" (list (+ X 20) Y) "5" "0" (rtos (car point) 2 2))
    5 J' v6 r! t$ v- Q, r' w: M( i) y5 w: L
  12.     (command "Text" (list (+ X 60) Y) "5" "0" (rtos (cadr point) 2 2));保留两位小数
    / w9 C- M' F$ Y2 E% q! M& f
  13.     (setq Y (+ Y 10))
      L  Z' ?! ]( ^( i, q
  14.     (setq n (+ 1 n))
    " ~$ r& N& ]: B! z; L6 E
  15.   )  $ ]0 I- H* ~, E8 D
  16.   (setvar "cmdecho" 1)
    1 a4 L& H2 e1 c9 v3 Q/ {
  17.   (princ)" m, p0 ]' ^7 }( B. T1 H6 F
  18. )7 [7 K* C2 F8 R' Q- M
  19. (defun GetInterPointlist (ent_1    ent_2    /      ent1     ent2
    3 l, G* h" K. p6 W+ g
  20.      ax_ent_1 ax_ent_2 intpoints       i" F. Z3 z; A; c1 N. X, M
  21.      j    k     disp     int_list, O( K. l; _; L! x: C
  22.     )) n6 P8 N7 m3 y& g/ F: D
  23. 0 C" ^8 A9 m3 i* m8 }
  24.   (setq int_list nil)
    . e6 e- ^4 `2 o: v' G1 W5 R
  25.   (setq ax_ent_1 (vlax-ename->vla-object ent_1)
    ! V# i! Y) E( R1 ^4 x
  26. ax_ent_2 (vlax-ename->vla-object ent_2)4 e3 s$ {6 Y: W' C& l% Y, G
  27.   ): d/ s9 H  i7 J- k: X$ `( w- E
  28.   (setq intpoints (vla-intersectwith ax_ent_1 ax_ent_2 acextendnone))* x4 B7 M  c- T+ S( A, W
  29.   (setq intpoints (vlax-variant-value intpoints))- t6 D2 w: n1 r8 {6 r, g2 d% f
  30.   (if (> (vlax-safearray-get-u-bound intpoints 1) 0)% p) l0 ?+ _- O3 C" s
  31.     (progn
    - }" a) {( d7 }9 {# C$ l
  32.       (setq i 0)
    + v7 X! [2 V/ j8 X/ f8 f
  33.       (setq j 0)
    + i) _3 y" f8 h
  34.       (setq disp "")
    ) D! J  H# R' X* Y5 |
  35.       (repeat
    6 ]7 E* Q' \7 _6 a2 F6 ]! A
  36. (/ (+ 1  }7 d0 b3 O% K3 \/ W
  37.        (- (vlax-safearray-get-u-bound intpoints 1)- q6 z! ?4 H3 M' P
  38.    (vlax-safearray-get-l-bound intpoints 1)6 ?3 s/ J. d" A, P% o. e% Z) j8 N
  39.        )& H% t9 x" s* I
  40.     )
    + H* o) F* `' M6 i+ ^! }& Z
  41.     3
    ' g# R0 t; G3 c5 P1 o
  42. )
    ( O+ n8 F. W& ~" Z& E, w) V/ Q( R
  43.   (setq
    ! H1 T8 p. L6 p7 O
  44.     disp (list
    ( k# z- ]* k( s% n$ H, G
  45.     (vlax-safearray-get-element intpoints j)
    0 T9 n5 ~4 f% L# N8 Y, F

  46. 2 z9 ^  m5 y/ ]. ^) n
  47.     (vlax-safearray-get-element intpoints (+ 1 j))
    ; D0 w: _. c+ X5 F
  48. : s- G# O) a' A6 m; Z
  49.     (vlax-safearray-get-element intpoints (+ 2 j))* F& ]& f* y- \" Z
  50.   ), h: X# \- ]+ A* I) c) J  Z8 @
  51.   )8 [5 J8 M8 b/ E( ]6 x
  52.   (setq i (+ 2 i)
    / C9 @/ n2 a; b, g
  53.         j (+ 3 j)
    / g* d" ~* E* |4 k$ f2 b/ ?& _
  54.   )
    ' V# |  x( U' |+ }7 s
  55.   (setq int_list (append int_list (list disp)))
    - B2 h3 E5 `9 L, T" T
  56.       )
    . ]& }" o% o, U1 r  D6 P
  57.     )
    ! k% s: i( N; k& r
  58.   )
    , L6 m( W2 k' n# @9 j
  59.   (setq int_list int_list): J( p9 e+ Q' F6 S- G% U
  60. )/ ~3 P" X4 U7 a" N. P# o5 |) n& @7 {
复制代码
 楼主| 发表于 2014-10-23 21:14:11 | 显示全部楼层 来自: 中国浙江绍兴
xhq1954425 发表于 2014-10-22 13:18 static/image/common/back.gif
' `5 k* [. Y1 y! i0 ~这个是保留两位小数的:

5 F- F# u" k. a# D4 d; F* s谢谢,我不要坐标,我要的是每一个角度的凸轮轮廓线到中心的距离
 楼主| 发表于 2014-10-23 21:18:09 | 显示全部楼层 来自: 中国浙江绍兴
本帖最后由 txh007 于 2014-10-23 22:33 编辑
& G/ d9 m) J* @; L
woaishuijia 发表于 2014-10-23 10:52 static/image/common/back.gif
( Z5 r2 a% C" ?" u' p. h代#7楼重帖代码
4 w8 }. s6 G: P5 V9 S. k3 ?" K6 Z
我想问一下,这代码怎么用呢,复制进去不会用
0 e6 X+ n+ y: F9 X; ~
发表于 2014-10-24 08:55:27 | 显示全部楼层 来自: 中国辽宁本溪
本帖最后由 xhq1954425 于 2014-10-24 09:06 编辑
* ^! K+ g" Z( R7 C
$ }( k0 _( ~( F: V3 T: M要数据的话,应该将数据写入记事本中,这样便于复制使用,但不知道是不是你要的形式?也不知道你何时再进来看这个贴(好像是你发完贴之后好多天就不管了)……?先发一个改进一点的,等你批准说行了,我再发程序,也避免改来改去的:: H8 d$ T; x# b: t2 ~- K) ?
" d( J: U' `( ?$ d9 t" f# j
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.gif& Y, P- {' _$ i$ c( y
楼上 搞二次开发的吗?  厉害
! J. r! u( `; O. F( Q& Z3 E8 }
我不厉害,二次开发只是业余爱好,本人是从事制图教学工作
发表于 2014-10-26 09:45:44 | 显示全部楼层 来自: 中国上海
txh007 发表于 2014-10-23 21:14 static/image/common/back.gif) ]8 h. ?/ {" ~# {  W9 ?
谢谢,我不要坐标,我要的是每一个角度的凸轮轮廓线到中心的距离
$ N$ d. e% W# Z9 S
你要的不是坐标位置吗,莫名其妙
 楼主| 发表于 2014-10-27 12:33:18 | 显示全部楼层 来自: 中国浙江绍兴
本帖最后由 txh007 于 2014-10-27 12:39 编辑 + I! X7 ]# x! s0 \
xhq1954425 发表于 2014-10-24 08:55 static/image/common/back.gif+ V. Z6 m3 \* G0 V8 [8 Q) _
要数据的话,应该将数据写入记事本中,这样便于复制使用,但不知道是不是你要的形式?也不知道你何时再进来 ...

% Y; y# s# f1 o就是这样的  h0 c% k1 J) I$ _+ O' g
就是把精度为小数点后的第4位如100.6666* b+ T5 E( x) y6 X4 @
谢谢,高手啊" i  z$ ?! u2 z# ^) s
我这两天一直在车间。没有看论坛的回复,( S: Z: N0 x1 W' Q" R! ]5 a% W
86156046是我的QQ
 楼主| 发表于 2014-10-27 12:37:30 | 显示全部楼层 来自: 中国浙江绍兴
zhuyi0829 发表于 2014-10-26 09:45 static/image/common/back.gif
0 U, \0 K  H1 m. S0 {( S你要的不是坐标位置吗,莫名其妙
' A! Y. j: [4 p2 Q9 @
我要的是极轴长度,凸轮边到中心的距离,如10度凸轮边到中心的距离为98.3253,11度凸轮边到中心的距离为98.3264,就是要的是边到中心的距离
发表于 2014-10-27 15:58:49 | 显示全部楼层 来自: 中国上海
txh007 发表于 2014-10-27 12:33 static/image/common/back.gif. l4 E9 f; V5 W6 X
就是这样的
, z6 K  I/ o% h& U就是把精度为小数点后的第4位如100.6666
+ z5 i6 {, t" C谢谢,高手啊

( D- F# t+ J5 L. N, R# o) c) n) B你知道国内有多少设备能加工到小数点后四位的,你做凸轮你的加工设备能识别到小数点后四位?
发表于 2014-10-27 16:01:06 | 显示全部楼层 来自: 中国上海
txh007 发表于 2014-10-27 12:37 static/image/common/back.gif
. U! h# U" S" `+ b( I% k我要的是极轴长度,凸轮边到中心的距离,如10度凸轮边到中心的距离为98.3253,11度凸轮边到中心的距离为9 ...

3 Y  s9 c$ ?& |# }! o7 R极坐标也是坐标,只是以角度加距离表示,坐标分好几种了,球坐标,笛卡尔坐标,极坐标等
 楼主| 发表于 2014-10-27 20:00:58 | 显示全部楼层 来自: 中国浙江绍兴
zhuyi0829 发表于 2014-10-27 15:58 static/image/common/back.gif9 Q  B5 ~) m( E3 ~7 D! y! J
你知道国内有多少设备能加工到小数点后四位的,你做凸轮你的加工设备能识别到小数点后四位?

9 c" x6 R- U9 N/ X0 \) _( f这是我们领导的意思,我也只能照着做。其实小数点后三位就够了
 楼主| 发表于 2014-10-27 20:01:51 | 显示全部楼层 来自: 中国浙江绍兴
zhuyi0829 发表于 2014-10-27 16:01 static/image/common/back.gif
. y; l( a8 u( c  F极坐标也是坐标,只是以角度加距离表示,坐标分好几种了,球坐标,笛卡尔坐标,极坐标等

4 n+ K1 y7 r9 P6 |( x( I是的,但领导要求是长度和角度
 楼主| 发表于 2014-10-27 20:02:30 | 显示全部楼层 来自: 中国浙江绍兴
zhuyi0829 发表于 2014-10-27 16:01 static/image/common/back.gif+ c1 V8 |4 @2 W  m
极坐标也是坐标,只是以角度加距离表示,坐标分好几种了,球坐标,笛卡尔坐标,极坐标等

' o$ ~( ~8 v# [9 Y* R/ \& k& ^. {+ ?是的,但领导要求是长度和角度
发表于 2014-10-27 20:17:13 | 显示全部楼层 来自: 中国上海
txh007 发表于 2014-10-27 20:01 static/image/common/back.gif, S3 E9 [; o/ V$ e" C! |2 V: C
是的,但领导要求是长度和角度
( y  b. Q8 y& P' W) J
我觉得很奇怪,是你提问题还是你领导提问题啊,既然都是你领导的意思,叫他解决问题啊,发什么帖呢
 楼主| 发表于 2014-10-29 12:46:02 | 显示全部楼层 来自: 中国浙江绍兴
zhuyi0829 发表于 2014-10-27 20:17 static/image/common/back.gif
6 p6 k0 u8 f6 v8 E' k3 p; ?我觉得很奇怪,是你提问题还是你领导提问题啊,既然都是你领导的意思,叫他解决问题啊,发什么帖呢

" H. U. Q' f# U我是要做具体工作的人,他嘴巴一动就行了,我总不能对领导说你做,我不会做的
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则


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

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

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