|
|

楼主 |
发表于 2009-10-22 12:55:03
|
显示全部楼层
来自: 中国湖北十堰
本来想晚上回来在试试的
" M7 a0 {" c3 P7 Q4 l+ y但是现在不试睡不着 5 |# y& b& f" w1 l6 _1 l3 R
嘿嘿
1 z( i5 z0 v- |7 v5 B' D; P9 {' f7 O( z" J8 d
试了试+ [0 e2 b. S- w3 K& h, o4 m+ V' P+ L' H
谢谢版主 打开了那个文件) X4 |: }3 H4 A7 \
下面是代码
6 j1 I1 l0 E' O* k" f1 s'Declare Function GS_MHDog Lib "win32dll.dll" (DogData As MH_DLL_PARA) As Long0 @# N& Q9 h, a
'Declare Function InstDrv Lib "RCMicroDogSetup.dll" Alias "InstDriver" (ByVal a As Integer) As Integer" m$ F% ], W+ J
'Declare Function UninstDrv Lib "RCMicroDogSetup.dll" Alias "UninstallDriver" (ByVal a As Integer) As Integer
- N7 ]7 }7 K$ Q4 q'Declare Function GetDogDriverInfo Lib "RCMicroDogSetup.dll" () As Long* K5 L7 _% T$ Z2 H9 A, T8 p$ I
'Declare Sub DriverDialog Lib "RCMicroDogSetup.dll" ()
$ i7 \' ^% j3 n% q/ T% |; \3 R! }'Declare Function NotifyPullOutAndPlugInUsbDog Lib "RCMicroDogSetup.dll" (ByVal a As Integer) As Integer
5 D$ \) P. P2 s9 a2 c b5 E1 `: C4 J
'Declare Function yy Lib "jmcar.dll" () As Long8 R& C1 A1 A+ H
'Public xxx As New CAMZDSHXJ
8 Q: o4 N" Q, i0 i, HConst SYNCHRONIZE = &H100000. E- L F7 W- Y8 f, r* g. W
Const INFINITE = &HFFFFFFFF
" o# h2 M3 E7 ?7 ^ dPrivate Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long1 g5 X; f6 D! q# J+ B6 {
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long; B2 e; z& O( D& z" N4 D# w3 \
Private Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long
) O* D6 K/ u d; b# r1 Y% i( SPrivate Declare Function TerminateProcess Lib "kernel32" (ByVal hProcess As Long, ByVal uExitCode As Long) As Long6 y; S) ~9 G8 N, M( |
& b0 B2 w" o, k
Public Function getmac() As String8 ]( b+ ?! A+ d% Z( P
Dim retval
; B' [6 l/ C- _, k4 G Dim pId As Long, pHnd As Long ' 分别声明 Process Id 及 Process Handle 变数
' \. _, Y5 F$ G6 y5 M4 t8 a Dim MYSTR, lstr As String4 `2 \ s) o3 @ d& m& X, q' R5 P
If Dir("D:\cnc\hxj1.txt") = "" Then
% J6 S. r$ I4 b7 h" _4 g Else& Z9 P' w4 w& P& d5 z* t
Kill "d:\cnc\hxj1.txt "
! f2 L w3 U; w End If9 a# S: V- _1 Y
pId = Shell("cmd /C ipconfig /all > D:\CNC\hxj1.txt ", 0) ' Shell 传回 Process Id
8 x$ A6 V/ V1 [ pHnd = OpenProcess(SYNCHRONIZE, 0, pId) ' 取得 Process Handle/ @; X) J' l( J7 n% A
If pHnd <> 0 Then
* [7 T2 b" a6 h( W! U# Y Call WaitForSingleObject(pHnd, INFINITE) ' 无限等待,直到程序结束0 \0 e% s' N2 \; N2 w' n+ c
Call CloseHandle(pHnd)
* g1 H S" `" L* ~, f+ b- i End If
: K$ u, B; Z$ G7 Z6 _ M Close
9 d; t, b6 \3 q0 ?0 Z# K: \4 A4 \ Open "d:\cnc\hxj1.txt " For Input As #3
' {# v- m8 P" d) N5 {8 B- O Do While Not EOF(3)
# c3 g. w1 a+ u8 q' f6 Y' W Line Input #3, lstr/ \( O& U% l" A
If InStr(lstr, "Physical Address") > 1 Then) E# C8 ~/ |* I
MYSTR = Split(lstr, ":", 2, 1): `0 A! f3 M# T
getmac = MYSTR(1)4 J, Z6 r5 Y0 Q i7 q4 w% D# f
Exit Do
% |/ \$ h# t6 d0 M End If9 h2 h& ?) Q, B8 g. C6 ~
Loop
' T7 x1 ^, Q1 ]* ]3 ? Close6 F/ I3 V* I R3 A# v, |, A0 P' y
End Function( }1 u9 r1 I2 g1 F/ P% N) u6 z
Public Sub DelDoubleALL() '删除重复图素
5 h% X- R+ R4 r- N6 C- ^- X- s Dim i, j, k As Integer
; i- Y3 s+ u {' O* l# F Dim ssetObj As AcadSelectionSet- ^) u+ T9 A& S# v( u+ k
Dim dege1 As Double, dege2 As Double
& P4 ^7 B$ k# J! g5 w Dim dege3 As Double, dege4 As Double
! e: K3 _5 W9 N8 w0 s! Q Dim pt1 As Variant, pt2 As Variant, Yuanr As Double, yuanr2 As Double
3 ~' l' B1 V3 O Dim pt10 As Variant, pt20 As Variant, Yuanr1 As Double Y6 [# W) N: \+ f5 _- Z/ s1 r
Dim ic As Integer
0 G8 {/ b5 f( _# ~0 f5 w Dim str1 As String, str2 As String, id1 As String, id2 As String) x0 V$ ~5 s2 D* [3 t T
Dim EntName() As String, line1() As Variant, line2() As Variant1 I! U+ _( g9 a, x6 Y
Dim line3() As Double
1 m2 }: u0 Z4 p$ }6 F8 K5 A Dim arc1() As Variant, arc2() As Double, arc3() As Double, arc4() As Double
' W, H0 h8 B$ x G3 A Dim cir1() As Variant, cir2() As Double, blk1() As Variant
5 r; E" U" ^& c% l) Y Dim blk2() As String
w$ R4 l8 |# q, ]/ k& O ]6 j! e7 [ ic = ThisDrawing.SelectionSets.Count '选择集的个数- e/ ]" d/ ^; R% c" R5 b- |
If ic > 0 Then9 Z3 h# R2 {5 \' N8 e- {0 P: _
For i = ic - 1 To 0 Step -1# o& p# U% n& b# |( r6 y6 _
Set ssetObj = ThisDrawing.SelectionSets(i)
9 N" V" ~5 i( A If ssetObj.Name = "SSSS" Then ssetObj.Delete '存在该选择集删除它
% W+ w/ c. d8 y5 B1 [ Next
; [4 Q1 M: W- p, jEnd If$ c8 S: P3 ^; r) K
Set ssetObj = ThisDrawing.SelectionSets.Add("SSSS"); ^% a4 |# w1 z3 {2 z
' Add objects to a selection set by prompting user to select on the screen4 v+ D$ T6 C+ o* Y
' ssetObj.SelectOnScreen
6 d6 E q+ q: f' h4 I* [' S ssetObj.Select acSelectionSetAll '把全部图形加入选择集 t* ]6 P; L6 {; V7 p1 i* }, Z
' sele1.Select acSelectionSetAll, , , ft, fd '层选择
5 ^$ t/ r# E0 ~6 a On Error GoTo ccc14 _5 ~4 D4 {: ~6 ~! @( `
ic = ssetObj.Count - 1& [4 _3 O7 ^% d6 f& P: z
If ic < 1 Then '选择集孔或图素小于2则退出
4 [# R, b5 H4 [2 [# t/ ]5 Y3 H6 W Exit Sub
8 m5 y% z4 R; h: _' G" X$ U End If
& _( t8 j( I5 b$ {) G; o* h$ Z4 p, ^ ReDim EntName(0 To ic)
! E& ^+ t- R+ y; r+ G5 a ReDim line1(0 To ic): ReDim line2(0 To ic): ReDim line3(0 To ic)
1 n; v# o8 E7 j" H# M6 @ ReDim arc1(0 To ic): ReDim arc2(0 To ic): ReDim arc3(0 To ic)/ c3 y! b1 G9 V7 y4 i4 I
ReDim arc4(0 To ic)
/ e8 r$ l8 _+ v6 Y( G ReDim cir1(0 To ic): ReDim cir2(0 To ic), ^' I8 X, O/ w& I# K
ReDim blk1(0 To ic): ReDim blk2(0 To ic)4 c/ u1 N a# K- W) `' D
With ssetObj
5 J1 O2 ~4 p! B/ C* F' U# g5 } For i = 0 To ic0 p2 T3 U$ `5 j2 V1 @" F' f
EntName(i) = ssetObj.Item(i).ObjectName5 h6 y' [! |% q: t3 ]! R- l7 ^
Select Case EntName(i)
, S, U0 A4 x! t Case "AcDbLine"& p/ Q# a0 I% m: U) D6 {$ [
line1(i) = .Item(i).StartPoint' S4 F( E3 |2 j* y' q
line2(i) = .Item(i).EndPoint+ p2 V3 x" Q9 m# H Q9 \7 ~6 g
line3(i) = .Item(i).Angle- O! R& W0 i. |$ k4 L; Y3 b
Case "AcDbCircle"
4 \% X9 G' V, U f' A- L% F cir1(i) = .Item(i).Center
' C, `9 y* g$ _: N7 E cir2(i) = Int(.Item(i).Radius * 1000) / 1000
1 c0 {( A# P9 \/ g( L Case "AcDbArc"% T5 l8 @9 |! t6 k' Z$ X+ Z# G Y6 [
arc1(i) = .Item(i).Center
: K4 W2 D$ b5 F, ]: D0 F arc2(i) = Int(.Item(i).StartAngle * 1000) / 1000* f$ ?' [8 v2 K1 }; I
arc3(i) = Int(.Item(i).EndAngle * 1000) / 1000
- g3 D+ u: m, V8 T# y5 K3 f arc4(i) = Int(.Item(i).Radius * 1000) / 1000" R6 f' [% f: ]( m8 k
Case "AcDbBlockReference"
! s) e) H( n( ~! W$ L, a( I blk1(i) = .Item(i).InsertionPoint5 y+ e. W! C2 J' q
blk2(i) = .Item(i).Name
0 ?0 J# r* v- p4 ] End Select
7 T# {. F5 }! w
6 v# I: t* ]3 q+ [ Next i
: Q$ k* a- X+ f2 b. F- j5 m% I' y! ~9 m( i& Q6 m& |
For i = 0 To ic - 1
/ L9 M7 h+ I J- i3 s. _ id1 = EntName(i)8 D8 h' R/ s, Q9 d/ j
For j = i + 1 To ic
1 Z/ s2 x' [, b4 D" g id2 = EntName(j)+ X- U5 l& X! z3 ~
If id1 = id2 Then
% n/ o" j O2 N- t* T# I7 z+ J Select Case id18 K! Z; C ?" u8 Y. R: v* C
Case "AcDbLine"$ y( g3 e. @3 C% M# U
pt1 = line1(i)
( G- `! z' H2 p9 i7 m pt2 = line2(i)
5 p. I x: q ^* n5 |* N dege1 = line3(i)& Q8 k6 A9 p# \* w# v x
pt10 = line1(j)1 F8 h" b% m) M( S& X) z" K
pt20 = line2(j)3 f" S+ @3 j/ }
dege2 = line3(j)
6 L6 P' J$ K) g& |9 s If Abs(pt1(0) - pt10(0)) < 0.01 And Abs(pt1(1) - pt10(1)) < 0.01 And _
- V3 A$ X5 ~% k& ?6 p( d Abs(pt2(0) - pt20(0)) < 0.01 And Abs(pt2(1) - pt20(1)) < 0.01 Then
9 I# w H9 |* p; Z" O+ s .Item(i).Delete
" @* F- `, R! K. t0 R+ l* I6 z Exit For
1 h" C* w$ N5 q End If" N6 [* o# D. {- W
If Int(Abs(dege1 - dege2) * 10000 + 0.5) / 10000 = 3.1416 Then
% A' y% C) s% X9 i If Abs(pt1(0) - pt20(0)) < 0.01 And Abs(pt1(1) - pt20(1)) < 0.01 And _
9 Y4 L7 l2 ^6 B# B( @ Abs(pt2(0) - pt10(0)) < 0.01 And Abs(pt2(1) - pt10(1)) < 0.01 Then
e" y- ]/ l/ T; O j/ i% x7 K6 j" l .Item(i).Delete
' w/ j; j; c3 Z( a/ Q x1 X2 ? F Exit For+ s( W. r: {- Q0 ~9 v3 q
End If
. F$ a* Z' x# n End If& r! M) ~7 E* I3 H) y; S5 d" o2 y7 e: X
Case "AcDbCircle"
( J. t H0 p w6 y' J$ p pt1 = cir1(i): ]* D) c8 E$ g% T/ @6 |7 m% B2 C
Yuanr = cir2(i)
$ @ N6 z3 m6 O2 w/ F: {0 O pt2 = cir1(j)" H% H) x+ }" \2 J O+ O
yuanr2 = cir2(j)3 q8 t( H$ M7 m! k
If Sqr((pt1(0) - pt2(0)) ^ 2 + (pt1(1) - pt2(1)) ^ 2) < 0.01 And Yuanr = yuanr2 Then3 w! ]: s- P" r# N
.Item(i).Delete
: `* I1 d% P- c$ G8 m' P" O Exit For x% g4 \) i8 D3 `
Else& N! O; Q) P& t$ i# h, Y9 J6 w& I9 O
If Sqr((pt1(0) - pt2(0)) ^ 2 + (pt1(1) - pt2(1)) ^ 2) < 8 Then, x9 s/ q: [. ?$ c
.Item(i).color = acGreen
: [8 ?; A- F$ _- ~$ b End If
* X, S$ |7 @# A5 S& Y4 K) _ End If
$ K! n) @$ O+ g! K2 ]9 c* U! m3 l Case "AcDbArc" Z( F0 `9 Y* S: j d
pt1 = arc1(i)! i u$ H4 J/ }! \6 w. H; t
dege1 = arc2(i). q' j0 t' w# v. G* t9 i
dege2 = arc3(i)% D0 I) _; b) e* z
Yuanr = arc4(i)
: k7 P6 w8 L E+ u pt2 = arc1(j)
6 P# _/ {4 Q- Y8 s7 h# p dege3 = arc2(j)
! C# Z8 S. o" Q& Y dege4 = arc3(j)
! h0 @" A0 k) N9 P yuanr2 = arc4(j)
' b! ?( d5 z' N# n) Y! {* E If Abs(pt1(0) - pt2(0)) < 0.01 And Abs(pt1(1) - pt2(1)) < 0.01 And Yuanr = yuanr2 _* `5 m0 y, m' f2 Y0 Y: c
And dege1 = dege3 And dege2 = dege4 Then6 h0 g2 m* k" s
.Item(i).Delete! I- T/ X A) d* X5 d6 d) `
Exit For
% c6 W e; K% R: D0 y$ O! r End If
, V1 D1 H# T; S f: S" o! D Case "AcDbBlockReference"# a% \: m0 c; l: j ~/ W
pt1 = blk1(i)
2 f4 P$ L* x, m5 R' ? str1 = blk2(i)
& n7 I: l% t V& }( s" X; w$ O pt2 = blk1(j)
# A3 o+ J+ X- [2 r v% E% x* j str2 = blk2(j)
( I3 C0 |/ k) I" ?( G If Abs(pt1(0) - pt2(0)) < 0.01 And Abs(pt1(1) - pt2(1)) < 0.01 And _- m: C) G( Q6 D# d% {
Trim(str1) = Trim(str2) Then. \' X, m: |2 u0 l
.Item(i).Delete
( [0 Q4 I+ v1 r2 B7 ^ Exit For" I/ }) N F( }. p7 T# w
End If, i7 I* m: }5 F! R, L/ z' ~' E
End Select
8 H2 M+ `" V& V End If8 Y# O. ]" h6 H
Next j) W. g* k9 [2 ]6 F
Next i
1 {5 s3 j! r9 ^/ n! `. {- s$ _2 L End With& T) P4 @. ]/ u+ h: v* `2 j2 s; v
' MsgBox "删除重复完成!"
* [! D6 B/ T) L, h2 s/ O7 t GoTo ccc28 |1 k2 _/ O$ ?$ {$ ]
ccc1: MsgBox "有错!!!"
+ _" q- ?6 s5 E8 R8 P7 ]ccc2: 'ssetObj.Delete5 k% K# {0 s$ s5 I ?2 e
. x7 W5 r, A/ n9 J/ F6 q8 w% }5 h End Sub
1 z. d ]2 ]6 ?, }/ C3 a
& m1 y0 _/ L4 _; r Public Function Clamp100(a1 As Double) As Double '判断块存在不存在,存在=100,不存在=01 S2 m4 A- v+ i
Dim p1(0 To 2) As Double '交叉选择的左下角点
U2 [4 e! L5 s& ^- G0 n7 K3 | Dim p2(0 To 2) As Double '交叉选择的右上角点6 ^. a, M( K" U
Dim ssetObj As AcadSelectionSet
! H9 y h: Q, N( P/ Q5 }! M- k4 O Dim ic As Integer, j As Integer% l/ M2 r8 Z& C" G5 Z
ThisDrawing.SelectionSets("SSSS").Delete0 ?5 V8 e, `/ t( e
Set ssetObj = ThisDrawing.SelectionSets.Add("SSSS")
$ T- O' D0 z3 G5 ? D p1(0) = a1 - 15: p1(1) = -25: p1(2) = 0
8 c$ q1 m3 F G% Z' {6 L! ?9 T p2(0) = a1 + 15: p2(1) = -5: p2(2) = 0, k4 w) {+ s( c: A* c+ \1 ]
ssetObj.Select acSelectionSetWindow, p1, p2
: x5 Q. ]$ n8 @1 Z: L, W, J. g For j = 0 To ssetObj.Count - 1
. P7 T$ `6 w8 I/ W1 O; _ ssetObj.Item(j).color = acGreen- q- {% ]( J2 t$ `/ {1 D' \3 f
ssetObj.Item(j).Update
' w* }% @2 B4 N8 q8 K0 ~8 K9 K Next j: H% r) \# a4 s4 H) r
Clamp100 = ssetObj.Count: Q# Q' ?0 h" Q$ @& B s
End Function: D* E; F3 l1 O) ]/ K7 A, R( L
% J' {! O T8 _, H( G4 \) v
! s4 S$ C0 Q" X% q
: I$ Q9 g3 m h1 |# O! K$ t, p' J+ d
看不太懂 不过 我在这里多学学 应该没问题的 嘿嘿 |
|