MZ@ !L!This program cannot be run in DOS mode. $PELSH! p @ @hS  H.textd p `.rsrc@@.reloc @BH2Q( *( *s s s s *0 ~o *0 ~o *0 ~o *0 ~o *0 ( ( *0( *0 ( *0( *0 -(+**0 *( *0( { o -(+ { o *J( s } *( *0 rp( *0 rOp*0rap*0*0( *(! *0rmp*0rp*0rp*0rp*0rp*0r5p*0rYp*0r[p**>~,**(" *0rp( *0rp*0(!rp rp(# r?p(# rp(# rp(# r?p(# r[p(# rup(# r*p(# rxp(# rp(# rxp(# rp(# r7p(# r{p(# rp(# rlp(# r|p(# rp(# rp(# ($ o% &*(" *0rp( *0r$p*0(!rp rp(# r?p(# rp(# rp(# rNp(# rp(# rup(# r*p(# rxp(# rp(# rQp(# rxp(# rp(# rxp(# r2 p(# r p(# r7p(# r{p(# r p(# r' p(# r p(# r p(# r p(# r p(# r! p(# rg p(# r p(# rJ p(# r p(# r p(# r p(# r2p(# rDp(# rp(# rp(# rp(# rTp(# rlp(# r|p(# rp(# rp(# ($ o% &*(" *0rp( *0 rp*0!(!rp rp(# rp(# rp(# rp(# rNp(# rjp(# rp(# r*p(# rxp(# r=p(# rxp(# rp(# r:p(# rp(# rp(# rp(# r7p(# r{p(# r p(# rwp(# rp(# rp(# r p(# rp(# rYp(# rp(# r p(# rp(# rGp(# rp(# rlp(# r|p(# rp(# rp(# rp(# rSp(# rxp(# rp(# rHp(# rjp(# rp(# rp(# r.p(# rzp(# rp(# rp(# rFp(# rp(# rxp(# rp(# rp(# rp(# ($ o% &*(" *0"rp( *0#r2p*0$(!rp rp(# rNp(# rp(# rp(# rup(# rp(# rp(# rxp(# r p(# rsp(# rp(# rxp(# rp(# rxp(# rxp(# rp(# r p(# r}p(# r p(# rxp(# rRp(# rp(# rp(# r@ p(# r p(# rp(# r p(# r0!p(# rxp(# r!p(# r p(# r!p(# r"p(# r"p(# rI#p(# r#p(# r-$p(# r}$p(# r0%p(# r%p(# r%p(# rp(# r p(# r%p(# r p(# rd&p(# r&p(# r'p(# r'p(# r'p(# r'p(# r'p(# r'p(# rL(p(# r^(p(# r&p(# r'p(# r'p(# r'p(# r'p(# r'p(# r'p(# rL(p(# rp(# rlp(# rxp(# r(p(# r)p(# rL)p(# r\)p(# rp(# rxp(# r)p(# r)p(# rp(# r p(# rp(# r8*p(# r*p(# r+p(# r+p(# r,p(# r8,p(# rV,p(# r,p(# r,p(# r,p(# rxp(# r,p(# r(-p(# rt-p(# r-p(# r.p(# r p(# r`.p(# rlp(# rxp(# r.p(# r /p(# rL)p(# r8/p(# rd/p(# rp(# r|/p(# r,p(# r/p(# rxp(# r/p(# r20p(# rf0p(# rxp(# r0p(# r0p(# r0p(# rxp(# r 1p(# r81p(# r0p(# rxp(# rl1p(# rp(# rp(# ($ o% &*(" *0%r1p( *0&r1p*0&'(!rp rp(# rNp(# r2p(# rNp(# rjp(# rL2p(# r2p(# r3p(# rM3p(# r}3p(# r p(# r3p(# r3p(# r4p(# r4p(# r%p(# r5p(# r\5p(# rlp(# rt5p(# rxp(# r5p(# rxp(# r6p(# r6p(# rxp(# r/7p(# r7p(# rxp(# r7p(# r 8p(# r3p(# rE8p(# r8p(# rp(# r!9p(# r9p(# r9p(# r:p(# r%:p(# r3:p(# r}:p(# r:p(# r:p(# re;p(# r;p(# r'p(# r;p(# r <p(# rlp(# rxp(# r<p(# rG<p(# r<p(# r=p(# rp(# rq=p(# r=p(# r?>p(# r>p(# rlp(# r>p(# r>p(# rp(# rp(# ($ o% &*BSJB v2.0.50727l8#~H#Strings ?#USN#GUIDO|#BlobW 3!5''' ; ]  #] #_UsU'UAUtU7U 7$ vO : SUUU)7:7 E7 O ] x-  1"1& 1*+1.C121 1-11:1VG!2*P X `   ( (5 FB Fc!Fh!l4!FqH!xd!!!!!!Fx!Fq"Fq"F,"Fh@"H"Fq\"Fqp"Fq"Fq"Fq"Fq"Fq"F"q""3##FU$#Faq8#FD$L$FUh$Faq|$F&&FU&Faq&F`)h)FU)Faq)Fx//FU/Faq/F $,4<$,4<gch)(tqDD2LnLxL9AhYa5;@L )5.;Z.3Q@+@CCI!cciF+{sS++#++ + #s@+@`+`+++++ lp{)0p)F)F)F)F)FOtT#Y^<  uu2  H -- mscorlibMicrosoft.VisualBasicMyApplicationMyMyComputerMyProjectMyWebServicesThreadSafeObjectProvider`1MonkeyScriptWrapperPluginPlugInAttributesLibraryLoader_524770c2_1961_41a3_0cc0_6057653cc420ThelaZCurvesPipeCommandThelaZExtrudeSurfNormalCommandThelaZOffsetOpenCurvesCommandThelaZPolySelectCommandThelaZRandomSelectCommandMicrosoft.VisualBasic.ApplicationServicesApplicationBase.ctorMicrosoft.VisualBasic.DevicesComputerSystemObject.cctorget_Computerm_ComputerObjectProviderget_Applicationm_AppObjectProviderUserget_Userm_UserObjectProviderget_WebServicesm_MyWebServicesObjectProviderApplicationWebServicesEqualsoGetHashCodeTypeGetTypeToStringCreate__Instance__TinstanceDispose__Instance__get_GetInstanceMicrosoft.VisualBasic.MyServices.InternalContextValue`1m_ContextGetInstanceRhino_DotNetRMA.RhinoMRhinoUtilityPlugInGuidPlugInIDPlugInNamePlugInVersionIRhinoPlugInplugin_load_timePlugInLoadTimeOnLoadPlugInMRhinoPlugInAttributesAddressCountryEmailFaxOrganizationPhoneUpdateURLWebsitem_LoadedLoadLibrariesMRhinoScriptCommandCommandUUIDEnglishCommandNameIRhinoCommandresultIRhinoCommandContextRunCommandcontextSystem.ComponentModelEditorBrowsableAttributeEditorBrowsableStateSystem.CodeDom.CompilerGeneratedCodeAttributeSystem.DiagnosticsDebuggerHiddenAttributeMicrosoft.VisualBasic.CompilerServicesStandardModuleAttributeHideModuleNameAttributeSystem.ComponentModel.DesignHelpKeywordAttributeSystem.Runtime.CompilerServicesRuntimeHelpersGetObjectValueRuntimeTypeHandleGetTypeFromHandleActivatorCreateInstanceMyGroupCollectionAttributeget_Valueset_ValueSystem.Runtime.InteropServicesComVisibleAttributeMRhinoPlugInStringConcatRhUtilMRhinoAppRhinoAppRunScriptCompilationRelaxationsAttributeRuntimeCompatibilityAttributelaZToolslaZTools.dllM{524770c2-1961-41a3-0cc0-6057653cc420}laZTools 0.01a'<Developer address>'<Developer country>%<Developer E-Mail><Developer fax>1<Developer organization>#<Developer phone>1www.tedngai.net/laZ.htmlM{984fb7aa-f57c-4110-a138-d3ca585f6d1f}laZCurvesPipe#! -_RunScript ( #Option Explicit M'Script written by Ted Ngai APR 2008 y'Script for education purpose only, NOT FOR COMMERCIAL USE 7'Script version 0.1 alpha Call Pipe() Sub Pipe() Dim arrCurveID : arrCurveID = Rhino.GetObjects("Select Curve to Pipe", 4, False, True) M If IsNull(arrCurveID) Then Exit Sub  Dim dblRad : dblRad = Rhino.GetReal("Enter pipe radius", 1.0) 3 Dim strCurve,arrCurves C Call Rhino.EnableRedraw(False) E For Each strCurve In arrCurveID Rhino.Command("! _Pipe _SelID " &strCurve& " " &dblRad& " " &dblRad& " _Enter")  Next A Call Rhino.EnableRedraw(True) End Sub )M{3b3f1a22-f453-45f7-96b5-86d50370a0a9})laZExtrudeSurfNormal=Call Extrude2SurfaceNormal() ;Sub Extrude2SurfaceNormal() Dim strSurfID : strSurfID = Rhino.GetObject("Select Surface", 8) K If IsNull(strSurfID) Then Exit Sub Dim dblHeight : dblHeight = Rhino.GetReal("Enter extrude height", 2.0) Y Dim strCurve,arrCurves, C1, C2, arrClosPT Dim arrPoints, arrNormal, crvScale, arrNormalOffset, arrOffsetPts, i W arrPoints = Rhino.CurvePoints(strCurve) S ReDim arrOffsetPts(Ubound(arrPoints)) M ReDim arrClosPT(Ubound(arrPoints)) E For i = 0 To Ubound(arrPoints) Y 'Rhino.Print Rhino.Pt2Str(arrPoints(i))  arrClosPT = Rhino.SurfaceClosestPoint(strSurfID, arrPoints(i)) { arrNormal = Rhino.SurfaceCurvature(strSurfID, arrClosPT) U crvScale = (arrNormal(2)* dblHeight) arrNormalOffset = Rhino.VectorScale(arrNormal(1),1*dblHeight) arrOffsetPts(i) = Rhino.VectorAdd(arrPoints(i), arrNormalOffset)  Next G C1 = Rhino.AddCurve (arrPoints) M C2 = Rhino.AddCurve (arrOffsetPts) C Rhino.AddLoftSrf Array(C1,C2) 5 Rhino.DeleteObject(C1) 5 Rhino.DeleteObject(C2) M{aaa0b3f8-1a13-4412-90b3-91894f51b5a4}'laZOffsetOpenCurvesM'Script written by Ted Ngai NOV 2007 Call Main() Sub Main() Dim arrCurveID : arrCurveID = Rhino.GetObjects("Select Curve to Offset", 4, False, True) Dim dblDis : dblDis = Rhino.GetReal("Enter offset distance", 0.5) q Dim arrItems, arrDefaults, arrResults, blnVal, arrCEN [ arrItems = Array( "Options", "No", "Yes" ) ; arrDefaults = Array(False) arrResults = Rhino.GetBoolean("Delete original curves", arrItems, arrDefaults) I If Rhino.IsCircle(strCurve) Then ; Rhino.FairCurve strCurve  End If E arrCEN = CEN(strCurve, dblDis) 1 dblDis = Abs(dblDis) y arrCurves = Rhino.OffsetCurve (strCurve, arrCEN, dblDis) A If arrResults(0) = True Then O Call Rhino.DeleteObject (strCurve) MFunction CEN(ByVal strCurve, dblDis) m Dim crvSP : crvSP = Rhino.CurveStartPoint(strCurve) i Dim crvMP : crvMP = Rhino.CurveMidPoint(strCurve) 'IF WANT TO OFFSET OUTSIDE THEN USE *2, FOR INSIDE OFFSET USE /2 ! Dim arrCEN(2) + If dblDis > 0 Then K arrCEN(0) = (crvSP(0)+crvMP(0))/2 K arrCEN(1) = (crvSP(1)+crvMP(1))/2 K arrCEN(2) = (crvSP(2)+crvMP(2))/2 3 ElseIf dblDis < 0 Then K arrCEN(0) = (crvSP(0)+crvMP(0))*2 K arrCEN(1) = (crvSP(1)+crvMP(1))*2 K arrCEN(2) = (crvSP(2)+crvMP(2))*2  End If  CEN = arrCEN End Function M{ecd9adff-34ea-4183-8fc9-7e93cbd30e90}laZPolySelect['Script written and copyrighted by Ted Ngai A'Script version 0.01a May 2008 'Determine if objects is inside the polygon (must be polyline and -'only from Top view) 3Call InsidePolySelect() 1Sub InsidePolySelect() i Dim arrObjs, polyID, polyIDOri, arrPolyPt, strObj I Dim arrObjPoint, arrBox, isInside 5 Dim selectGroup, strBoo Dim arrItems : arrItems = Array("select", "Inside", "Outside") _ Dim arrDefaults : arrDefaults = Array(False) strBoo = Rhino.GetBoolean("Which which side of polygon",arrItems,arrDefaults) arrObjs = Rhino.GetObjects("Select objects", 0, False, True, True) G If IsNull(arrObjs) Then Exit Sub o polyID = Rhino.GetObject("Select polygon", 4, False) + polyIDOri = polyID Q If Not Rhino.IsPolyline(polyID) Then { Rhino.Print "The Object is not a polyline. Converting..." s polyID = Rhino.ConvertCurveToPolyline(polyID, 30,0.2) e arrPolyPt = Rhino.PolylineVertices(polyID) ; For Each strObj In arrObjs 'Get a point coordinate from the object. If the object is 2D or 3D, it'll only take i 'the mid point from its bounding box lower plane [ If Rhino.IsPoint(strObj) Then c arrObjPoint = Rhino.PointCoordinates(strObj)  ElseIf Rhino.IsCurve(strObj)Or Rhino.IsSurface(strObj) Then O arrBox = Rhino.BoundingBox(strObj) arrObjPoint = Array((arrBox(0)(0)+arrBox(2)(0))/2, (arrBox(0)(1)+arrBox(2)(1))/2,0) W 'Rhino.Print Rhino.Pt2Str(arrObjPoint)  Else _ Rhino.Print "cannot process these objects" i isInside = InsidePolygon(arrPolyPt, arrObjPoint) [ If strBoo(0) = True And isInside = 0 Then E If IsArray(selectGroup) Then y ReDim Preserve selectGroup( UBound(selectGroup) + 1 )  Else 7 ReDim selectGroup(0)  End If [ selectGroup(UBound(selectGroup))= strObj  e ElseIf strBoo(0) = False And isInside = 1 Then ? If IsArray(selectGroup) Then G Rhino.SelectObjects selectGroup  Else I Rhino.Print "No object selected" U If Not Rhino.IsPolyline(polyIDOri) Then ; Rhino.DeleteObject polyID _ 'The function is from Paul Bourke's website } 'http://local.wasp.uwa.edu.au/~pbourke/geometry/insidepoly/ y 'This particular algorithm is written by Philippe Reverdy sFunction InsidePolygon(ByVal arrPolyPt, ByVal arrObjPt) 3 Dim Pi : Pi = Rhino.Pi  Dim n : n=0 1 Dim angle : angle = 0  Dim p1, p2  ReDim p1(2)  ReDim p2(2) G For n = 0 To Ubound(arrPolyPt)-1 K p1(0)=arrPolyPt(n)(0)-arrObjPt(0) K p1(1)=arrPolyPt(n)(1)-arrObjPt(1) O p2(0)=arrPolyPt(n+1)(0)-arrObjPt(0) O p2(1)=arrPolyPt(n+1)(1)-arrObjPt(1) u angle = angle + Angle2D(p1(0), p1(1), p2(0), p2(1)) 5 If Abs(angle) < Pi Then + InsidePolygon = 0 + InsidePolygon = 1  End If EFunction Angle2D(x1, y1, x2, y2) ; Dim dtheta, theta1, theta2 3 theta1 = atan2(y1, x1) 3 theta2 = atan2(y2, x2) 7 dtheta = theta2 - theta1 ) While dtheta > Pi 3 dtheta = dtheta - 2*Pi  Wend + While dtheta < -Pi 3 dtheta = dtheta + 2*Pi ' Angle2D = dtheta M{e67222e2-7a4e-4180-ad98-38fd2bb2345c}laZRandomSelectI'Script version 0.01a May 19, 2008 ; Dim intGroups,x,g,gCounter g = Rhino.GetInteger("Enter the number of random groups",2,2,10) ; If IsNull(g) Then Exit Sub / ReDim intGroups(g-1)  gCounter=1 ' For x = 0 To g-2 A If (100-gCounter)/g > 1 Then  intGroups(x) = Rhino.GetInteger("Enter percentage (max)",(100-gCounter),1,100-gCounter) G gCounter=gCounter+intGroups(x) U Rhino.Print "Percentage exceeds 100%"  End If = intGroups(g-1)=100-gCounter U Dim arrObjects,layer,curlayer,arrLayers arrObjects = Rhino.GetObjects("Select objects for random group selection...",0, vbFalse, vbTrue, vbTrue) M If IsNull(arrObjects) Then Exit Sub W layer = Rhino.ObjectLayer(arrObjects(0)) M Rhino.ObjectLayer arrObjects, layer 3 Dim perGroupVal,Q,id,i ; Rhino.EnableRedraw vbFalse o If Not Rhino.IsLayer(layer&CStr(intGroups(x))) Then k Rhino.AddLayer layer&CStr(intGroups(x)),,,,layer } perGroupVal = Fix((UBound(arrObjects)+1)/100*intGroups(x)) 9 Rhino.Print intGroups(x) 7 Rhino.Print perGroupVal  Q = 0 Do I i = Fix(Rnd*UBound(arrObjects)) / id = arrObjects(i) 9 If id <> "Nothing" Then } Rhino.ObjectLayer arrObjects(i),layer&CStr(intGroups(x)) ? arrObjects(i) = "Nothing"  Q = Q+1 K If Q >= perGroupVal Then Exit Do  Loop ' 'Check remaining E For x = 0 To UBound(arrObjects) s If Not Rhino.IsLayer(layer&CStr(intGroups(g-1))) Then o Rhino.AddLayer layer&CStr(intGroups(g-1)),,,,layer M If arrObjects(x) <> "Nothing" Then  Rhino.ObjectLayer arrObjects(x),layer&CStr(intGroups(g-1)) ? arrObjects(x) = "Nothing"  End If 7 Rhino.UnselectAllObjects 9 Rhino.EnableRedraw vbTrue 8Q8~@ٟh:2z\V4?_ :        0 (U"|uU0 ! ) 9= E  MyTemplate8.0.0.0   My.Application My.Computer My.UserMy.WebServicesa  a4System.Web.Services.Protocols.SoapHttpClientProtocolCreate__Instance__Dispose__Instance__   !!)} 9 TWrapNonExceptionThrows _CorDllMainmscoree.dll% @0HXLL4VS_VERSION_INFO?DVarFileInfo$TranslationStringFileInfo000004b0,FileDescription 0FileVersion0.0.0.0< InternalNamelaZTools.dll(LegalCopyright D OriginalFilenamelaZTools.dll4ProductVersion0.0.0.08Assembly Version0.0.0.0 4