|
|

楼主 |
发表于 2009-10-22 12:55:03
|
显示全部楼层
来自: 中国湖北十堰
本来想晚上回来在试试的. h; R' B1 ]9 o$ ]
但是现在不试睡不着
! R. Y! N! o: {嘿嘿
) V. H6 ]9 |# ?9 A5 \+ U# _* o |) d( D8 |0 I" v5 E3 `8 n
试了试% W+ J6 f# |1 l( s. ]- Q: X9 w
谢谢版主 打开了那个文件
8 Z9 O4 f; s: B下面是代码5 y: c( e# T) o& Z& Z: h* y) ~) R
'Declare Function GS_MHDog Lib "win32dll.dll" (DogData As MH_DLL_PARA) As Long
4 _% R+ A5 Q/ N( L% v'Declare Function InstDrv Lib "RCMicroDogSetup.dll" Alias "InstDriver" (ByVal a As Integer) As Integer- c7 c. F5 C0 \/ L& u X
'Declare Function UninstDrv Lib "RCMicroDogSetup.dll" Alias "UninstallDriver" (ByVal a As Integer) As Integer
& D" T9 p. A- n'Declare Function GetDogDriverInfo Lib "RCMicroDogSetup.dll" () As Long5 j* o% O4 _5 l. P1 v- a
'Declare Sub DriverDialog Lib "RCMicroDogSetup.dll" ()
/ h8 l; z d& p4 c/ u'Declare Function NotifyPullOutAndPlugInUsbDog Lib "RCMicroDogSetup.dll" (ByVal a As Integer) As Integer0 i' K8 j v) q$ ~9 F1 v6 h
$ c2 N: C- [& J) T
'Declare Function yy Lib "jmcar.dll" () As Long, l3 s. }4 Z, c2 x
'Public xxx As New CAMZDSHXJ
/ v Q+ H& X" W! H! ~" F: N' d9 K' f% iConst SYNCHRONIZE = &H100000
4 m. F( S6 \: a" T* @2 E" zConst INFINITE = &HFFFFFFFF O" @/ H) K3 t% F$ P3 g" d- k
Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long1 R" |8 H- I# F0 W5 Z
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long {+ n& |6 p4 V& w% y, I
Private Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long
" t0 i2 V2 e3 Y/ l- O4 {Private Declare Function TerminateProcess Lib "kernel32" (ByVal hProcess As Long, ByVal uExitCode As Long) As Long9 M N" _! I% u4 V l: ]
& g2 X. `6 `( _2 b% f
Public Function getmac() As String" o1 E) u& { ]7 Q6 O0 e8 T
Dim retval
0 Y9 A& l/ q1 Y% Q R Dim pId As Long, pHnd As Long ' 分别声明 Process Id 及 Process Handle 变数
3 _! W, B0 c1 u Dim MYSTR, lstr As String9 h5 A. b: A* S+ g$ V6 A& t
If Dir("D:\cnc\hxj1.txt") = "" Then
% D9 X' p' v, m0 w' J Else
3 s) ~6 L3 |, m4 E Kill "d:\cnc\hxj1.txt "7 x2 H% q$ o: P' Z; o; H* j* g: R
End If
, d5 g" r# F) E7 \4 X" P# a pId = Shell("cmd /C ipconfig /all > D:\CNC\hxj1.txt ", 0) ' Shell 传回 Process Id: C8 V/ b8 c7 B0 t
pHnd = OpenProcess(SYNCHRONIZE, 0, pId) ' 取得 Process Handle
$ A: o. C; g6 I2 r; ]6 O If pHnd <> 0 Then
2 ^- P: h; d1 \* | Call WaitForSingleObject(pHnd, INFINITE) ' 无限等待,直到程序结束
9 L5 ^/ v N* K0 ~7 \ Call CloseHandle(pHnd)
' @4 `( H: j( v( k End If
, A' |& j. M% j9 ^ Close
, l2 a* L2 G- O+ W1 I Open "d:\cnc\hxj1.txt " For Input As #3
& K1 D9 o8 }2 H. d4 W; p Do While Not EOF(3)9 b7 T6 A! T9 z
Line Input #3, lstr+ n& _3 |5 c6 F! B/ `+ P* n
If InStr(lstr, "Physical Address") > 1 Then
. C, p3 p a* x7 M& i: A6 M4 E MYSTR = Split(lstr, ":", 2, 1)7 Z8 w+ t% x7 X Z8 `" ^
getmac = MYSTR(1)
; ? t2 D* S% M7 M5 D, f- J8 } Exit Do
s A3 n' Z1 Q8 O. L1 h End If, n; S3 ]: e; o/ G) ^
Loop
. Y# |5 C: S. m' b Close
t6 n/ K2 N Y7 l/ @End Function1 P; [8 @& g) ~# o4 o' p
Public Sub DelDoubleALL() '删除重复图素
: T. L% M c! I2 E0 a0 k Dim i, j, k As Integer5 E, H( k* Z% m7 V! b7 w
Dim ssetObj As AcadSelectionSet
. Q) A( L# _% r1 A- `) [: ?: _ Dim dege1 As Double, dege2 As Double: }5 D- ^6 a* g S! y/ ^
Dim dege3 As Double, dege4 As Double# f- E: o5 W5 ^; m# S
Dim pt1 As Variant, pt2 As Variant, Yuanr As Double, yuanr2 As Double9 H- u3 r' j! h, V b7 z& e
Dim pt10 As Variant, pt20 As Variant, Yuanr1 As Double
@- w% B5 `+ U& e, t# |, J Dim ic As Integer7 D2 M" ~( }# [6 B G) E
Dim str1 As String, str2 As String, id1 As String, id2 As String& u& d( t! X5 ~2 D- E
Dim EntName() As String, line1() As Variant, line2() As Variant6 t$ ^9 }6 a0 p7 E: u
Dim line3() As Double$ i2 c0 L6 g& z! p
Dim arc1() As Variant, arc2() As Double, arc3() As Double, arc4() As Double; {; v4 M: P' W) Z' a3 t
Dim cir1() As Variant, cir2() As Double, blk1() As Variant
- H+ I) H6 I* L8 t Dim blk2() As String
7 A2 @, `$ B6 k$ t ic = ThisDrawing.SelectionSets.Count '选择集的个数+ J7 M9 ?& r- e6 \9 A% S
If ic > 0 Then
g, x( k* k: j7 y For i = ic - 1 To 0 Step -1" Y: P* ?3 M/ i8 N
Set ssetObj = ThisDrawing.SelectionSets(i)) m* a4 U6 n- p6 X8 o# a
If ssetObj.Name = "SSSS" Then ssetObj.Delete '存在该选择集删除它
! l* \* z3 Y y1 m3 z0 D4 _ Next2 M: Q' C1 j1 N: P
End If6 U1 o% H( j$ _0 `+ T6 U# S- q
Set ssetObj = ThisDrawing.SelectionSets.Add("SSSS")
# d; j5 C+ f& c" w0 f3 u" {) j" B ' Add objects to a selection set by prompting user to select on the screen
$ H' r% i! r" t: T9 x' ssetObj.SelectOnScreen
$ Z7 G$ e/ A7 j3 z+ b9 L0 m: H4 y P ssetObj.Select acSelectionSetAll '把全部图形加入选择集
+ p- h7 z# W/ J* S' Y' sele1.Select acSelectionSetAll, , , ft, fd '层选择
3 d/ c' h* k: c' o1 S On Error GoTo ccc1$ G: _" Y4 y, R: ^0 M1 k$ x
ic = ssetObj.Count - 1. {3 L: I m+ ^! i: D U( C: k
If ic < 1 Then '选择集孔或图素小于2则退出
9 u) z7 P# Q3 @1 X9 H7 Y" w Exit Sub* K4 b" r* V) S0 J O
End If6 e3 X d- ~, y' j c' F2 K
ReDim EntName(0 To ic)! q) q4 B; V8 P3 R
ReDim line1(0 To ic): ReDim line2(0 To ic): ReDim line3(0 To ic)1 Z* c+ C9 e6 c- d& ]$ ?! B% I- J. \
ReDim arc1(0 To ic): ReDim arc2(0 To ic): ReDim arc3(0 To ic)
* c( I9 ]& x$ @4 `# z1 a ReDim arc4(0 To ic)
3 s# o+ d5 d4 |5 \ ReDim cir1(0 To ic): ReDim cir2(0 To ic)2 M6 _+ k) s; M5 K0 i- O
ReDim blk1(0 To ic): ReDim blk2(0 To ic) W/ [; W# D+ T
With ssetObj( N, `. O' f2 i, j0 G0 J' ^
For i = 0 To ic
; @ L* n7 C5 e6 s3 e EntName(i) = ssetObj.Item(i).ObjectName; P* T& z/ t4 }& h Y, R- H
Select Case EntName(i)
7 n/ d% x- l& D8 G+ T8 y! y W Case "AcDbLine"/ W' w; `+ k$ u0 @
line1(i) = .Item(i).StartPoint
& l1 [0 B' B" V2 ] line2(i) = .Item(i).EndPoint1 h. {. f! [) J+ G: U8 }! S
line3(i) = .Item(i).Angle' o) l* T7 Y+ F
Case "AcDbCircle"
3 s" ^! h# Q, i: V7 A! f cir1(i) = .Item(i).Center) h1 K+ D5 o' w2 v
cir2(i) = Int(.Item(i).Radius * 1000) / 10001 a) D* `2 k* m1 |# t& \9 X) X
Case "AcDbArc"
+ ?6 e1 S* {1 F) b: o arc1(i) = .Item(i).Center9 t3 O0 k* z# ]* v
arc2(i) = Int(.Item(i).StartAngle * 1000) / 1000* ^% V9 e: _& h" O) j- }
arc3(i) = Int(.Item(i).EndAngle * 1000) / 1000' [! \* O. r8 D, I7 @( d+ O
arc4(i) = Int(.Item(i).Radius * 1000) / 10008 V" T' w" I) c! @- L
Case "AcDbBlockReference"' h% x9 i/ W, g9 |& k+ H8 R+ G% N- f4 d
blk1(i) = .Item(i).InsertionPoint
3 g) K$ A) p$ L; x1 ?& ]7 X blk2(i) = .Item(i).Name
0 K* Q; Y; T8 G }/ o8 ~ End Select
3 T. u- H k2 V- E! I
. y" a$ F2 Z6 x. O7 b) \3 u2 p- Y4 m Next i" Z9 [" x. a1 J0 k- K* J( ~, @+ M: N
, O4 B- J, ^0 w8 @5 q For i = 0 To ic - 1. S' e3 `4 F/ f+ \+ ]0 z u+ Y
id1 = EntName(i)# j, y; I) U( Q( x( M4 Z& w
For j = i + 1 To ic
- Z% M6 l- C( F8 s5 L f6 c id2 = EntName(j)
. y8 \, q' m" [) m If id1 = id2 Then8 }1 k: i6 W- S
Select Case id1
5 H$ @( w6 w: u' W3 A, k# t3 ? Case "AcDbLine". D: ]0 z% i: Z1 T) g
pt1 = line1(i)+ X; i5 {, k+ F: p
pt2 = line2(i)1 {( Q* C8 c' W3 I
dege1 = line3(i)
2 c( w5 [# a& H' X: c pt10 = line1(j)
5 M# R6 a O$ i9 u5 A% Q. U# {' l pt20 = line2(j)) Q8 i6 [+ C4 U
dege2 = line3(j)4 S2 d. P" z4 S1 q+ R, i* }$ L) N5 ~, o
If Abs(pt1(0) - pt10(0)) < 0.01 And Abs(pt1(1) - pt10(1)) < 0.01 And _
( z$ U% M+ n; ^3 l Abs(pt2(0) - pt20(0)) < 0.01 And Abs(pt2(1) - pt20(1)) < 0.01 Then; l) ^* ?: R) Q: A
.Item(i).Delete5 @0 \( W; @1 Y! T4 _9 Y) P
Exit For) P/ k4 M8 {% K2 s/ f* z
End If
5 {, c" c1 ?/ Y. y* F1 Z! q( u If Int(Abs(dege1 - dege2) * 10000 + 0.5) / 10000 = 3.1416 Then
" J3 G |: {% r7 S/ x2 |1 U If Abs(pt1(0) - pt20(0)) < 0.01 And Abs(pt1(1) - pt20(1)) < 0.01 And _$ K% S/ U/ K2 x) y D/ r
Abs(pt2(0) - pt10(0)) < 0.01 And Abs(pt2(1) - pt10(1)) < 0.01 Then* ^2 d! U- @0 T+ m% C
.Item(i).Delete
@2 ^$ d3 X4 X$ I9 y% w+ X) m Exit For7 ?% d+ v. U4 X" M
End If2 D! O, ?: k+ R- Y' n- I
End If; N" S4 ~6 l' Q9 |' P
Case "AcDbCircle"2 y/ A4 [5 n. `- T9 c
pt1 = cir1(i), K6 U+ w% e9 G7 g
Yuanr = cir2(i)
- v8 Z; T: ^1 r% O+ D: M pt2 = cir1(j)
3 C2 E% }& O8 b6 R4 @ yuanr2 = cir2(j)
; O ?# p% u1 C2 _9 \! K$ \, U If Sqr((pt1(0) - pt2(0)) ^ 2 + (pt1(1) - pt2(1)) ^ 2) < 0.01 And Yuanr = yuanr2 Then
Z7 }, W5 e+ }; N .Item(i).Delete
) i; t+ }) m7 H/ v3 Q7 ]/ I- t Exit For0 P, L) K8 D& f/ |1 _5 b2 S
Else
7 d( `9 D! `- t3 j* f$ V: f. e If Sqr((pt1(0) - pt2(0)) ^ 2 + (pt1(1) - pt2(1)) ^ 2) < 8 Then
. y J, A1 K% P3 Z .Item(i).color = acGreen9 U7 a; ^" U/ z; w/ _; w9 ], _
End If/ x3 i* O8 z; o$ D) }
End If
! i1 g% e3 x- z4 M4 ~! e. H0 F9 H6 n* H Case "AcDbArc"3 ^8 ^3 f9 ?% [9 A. N# b7 d
pt1 = arc1(i)
' C, k) Z4 `8 s( }2 M dege1 = arc2(i)' |7 H8 S; s8 @/ b% J% c
dege2 = arc3(i)) a" ~9 d4 `& N
Yuanr = arc4(i)( y' ?$ K' R/ ?6 B# N
pt2 = arc1(j)" K. m, f. Y* a8 e; |8 q
dege3 = arc2(j)
& I, S( B" d1 Z- n% s& O% S dege4 = arc3(j)5 N2 _* b w9 h( [
yuanr2 = arc4(j)
! V2 f5 k" C: g If Abs(pt1(0) - pt2(0)) < 0.01 And Abs(pt1(1) - pt2(1)) < 0.01 And Yuanr = yuanr2 _
# F) i/ m1 Q ^ Z- }# y& O+ G And dege1 = dege3 And dege2 = dege4 Then" Y* X& O/ `1 @2 W7 B4 S
.Item(i).Delete
' h* `, u2 `+ W- P( j A Exit For
2 s7 P, z) `# u) { End If
' j* N# U0 L) v Case "AcDbBlockReference"+ ]. M: P) _* A/ N! `8 o
pt1 = blk1(i)8 k( m4 m1 L/ M5 m2 c2 {! P
str1 = blk2(i)
) t; C6 W N8 \5 d/ s pt2 = blk1(j)
1 z- ^( O7 G0 S9 r+ u( C str2 = blk2(j)) w8 ]7 e. Y; n( c+ t5 S
If Abs(pt1(0) - pt2(0)) < 0.01 And Abs(pt1(1) - pt2(1)) < 0.01 And _+ |: f: E# g% [
Trim(str1) = Trim(str2) Then
" G$ c5 [) M/ z$ z1 T .Item(i).Delete& |* E; @5 j5 C! B' @. I4 {
Exit For
9 o8 {; y. Y$ z6 ? End If% M5 V$ P& c* @' }9 c% b8 E
End Select
' N, U/ u; S. H. e) [' M; L, H End If
]3 w* x. i# L' J: j$ d. N, O Next j
1 ^. H6 n, @8 ]/ b: C7 O: y Next i
; e- \) a1 `1 y6 l- u0 y End With: Q/ q p: Q& J8 z
' MsgBox "删除重复完成!"8 k2 b3 A! A8 r6 T( N2 z
GoTo ccc2
! _. c3 w0 d( z9 H( Accc1: MsgBox "有错!!!"
) M5 s1 v! X8 xccc2: 'ssetObj.Delete
8 z. `& C. Y/ C" M. U$ a8 s3 J' Y
! a; ?& q$ M% |6 a# ?! u8 Z$ I0 [+ X End Sub; m# H$ F, C6 c/ d. Y# w& {
) N/ i9 O, x) M- S Public Function Clamp100(a1 As Double) As Double '判断块存在不存在,存在=100,不存在=0
7 N) _3 h" G6 B+ D; ? Dim p1(0 To 2) As Double '交叉选择的左下角点7 |+ N1 L8 U' q. Q2 Z( ~8 L
Dim p2(0 To 2) As Double '交叉选择的右上角点0 M. `! K0 P! p. f# j
Dim ssetObj As AcadSelectionSet6 l3 A& y0 m$ _; ^/ ]8 v( P
Dim ic As Integer, j As Integer' @1 F- C: ^, W1 N, J. u
ThisDrawing.SelectionSets("SSSS").Delete3 @3 c) L. i3 d
Set ssetObj = ThisDrawing.SelectionSets.Add("SSSS")
+ r p! }3 d4 B7 A$ |! g( i0 F p1(0) = a1 - 15: p1(1) = -25: p1(2) = 0
+ w9 B& M; ]* E3 T p2(0) = a1 + 15: p2(1) = -5: p2(2) = 0
t* w, |2 c9 _3 o7 n7 D ssetObj.Select acSelectionSetWindow, p1, p2
' z4 x o: C; G! l9 T+ P For j = 0 To ssetObj.Count - 1$ i% _9 l0 d- B( H
ssetObj.Item(j).color = acGreen+ o* U- G+ k _ w8 S) p
ssetObj.Item(j).Update# ^4 H% |' V( H e2 k3 J
Next j7 ~5 G. |/ \$ }/ `/ d
Clamp100 = ssetObj.Count3 X) O4 a4 Z8 A& V+ V6 l O3 {9 R3 j
End Function
5 X2 T3 A- A# C' p, W& i% B v/ U+ M5 s6 @. z% O( j
! b& C/ l4 J" G- s+ Y$ q
0 t6 _3 Z) ], r% X8 v/ B) x; ^
: o3 x$ f5 a& u x2 Y' B
看不太懂 不过 我在这里多学学 应该没问题的 嘿嘿 |
|