PDA

View Full Version : A hand with coding????


jonny
02-05-2008, 02:19 PM
guys,

this is probably easier than reading the English language to most of you folks, but I'm stumped. What I'm trying to do is extract the start and end angles from the following autocircle (by the way, this is 4.2 MR1) and then swap them

CIR3 =FEAT/CONTACT/CIRCLE,CARTESIAN,IN,LEAST_SQR
THEO/<0,2,0>,<0,0,1>,1,0,35
ACTL/<0,2,0>,<0,0,1>,1,0,35
TARG/<0,2,0>,<0,0,1>
ANGLE VEC=<1,0,0>
DIRECTION=CCW
SHOW ADVANCED MEASUREMENT OPTIONS=NO
SHOW_CONTACT_PARAMETERS=YES
NUMHITS=3,DEPTH=0,PITCH=0
SAMPLE HITS=0,SPACER=0
AVOIDANCE MOVE=NO,DISTANCE=0.5
FIND HOLE=DISABLED,ONERROR=NO,READ POS=NO
SHOWHITS=NO

At this point, I cannot get anywhere with this. I tried to simplify my program and statically set the start angle of the autocircle. I can't get that to work either, so maybe one of you folks knows how to do this?

Private Sub cmd_Execute_Click()

Dim DMISApp As Object
Set DMISApp = CreateObject("PCDLRN.Application")
Dim DMISPart As Object
Set DMISPart = DMISApp.ActivePartProgram
Dim Feature As String
Feature = txt_Feature.Text
Dim StartAng As Double
Dim EndAng As Double

Dim Cmds As Object
Set Cmds = DMISPart.Commands
Dim Cmd As Object


'GET RID OF THIS NEXT LINE WHEN YOU COMPILE
Feature = "CIR3"


For Each Cmd In Cmds
If Cmd.ID = Feature And Cmd.Type = AUTO_CIRCLE Then
MsgBox (Cmd.StartAngle)
Cmd.PutText 15, StartAngle, 0
Cmd.ReDraw
End If
Next Cmd

End Sub


Thanks,

craiger_ny
02-05-2008, 02:53 PM
I have never monkeyed with auto features through automation. Have you tried exporting a program consisting of one autocircle as a .bas and looking at it?

Don Ruggieri
02-07-2008, 12:43 PM
Here is a piece of code that I've used for this purpose -



Private Sub Form_Load()

Dim App As PCDLRN.Application
Dim Part As PCDLRN.PartProgram
Dim Cmds As PCDLRN.Commands
Dim cmd As PCDLRN.Command

' Get the App, Partprogram and Commands
Set App = CreateObject("PCDLRN.Application")
Set Part = App.ActivePartProgram
Set Cmds = Part.Commands

For Each cmd In Cmds
'MsgBox cmd.TypeDescription + ", " + Str(cmd.Type)

If cmd.Type = 612 Then
MsgBox (Str(cmd.GetText(THEO_START_ANG, 0)))
MsgBox (Str(cmd.GetText(THEO_END_ANG, 0)))

End If

Next cmd

Part.RefreshPart

End

End Sub

jonny
02-08-2008, 06:09 PM
thanks don, your code worked. I can fool around with that and adapt it for what I need. Thanks again!

jonny
02-11-2008, 01:47 AM
in case anyone is interested...I wrote a script to flip auto circles around because the original release of PCDMIS 4.2 will sometimes take a program that was written in a prior version and flip the circles. It looks like this was fixed in MR1, but I thought it would be fun to try to write the code anyways. This is my first real automation script, so if you see any flaws with it, please let me know. Otherwise, enjoy!

Option Explicit

Private Sub cmd_Execute_Click()

Dim DmisApp As Object
Dim DmisPart As Object
Dim Cmds As Object
Dim Cmd As Object

Dim tStartAng As String
Dim tEndAng As String
Dim Direction As String
Dim Count As Integer
Dim Feature As String
Dim Flag As Boolean

Set DmisApp = CreateObject("PCDLRN.Application")
Set DmisPart = DmisApp.ActivePartProgram
Set Cmds = DmisPart.Commands
Feature = txt_Feature.Text
pic_Output.Print "Searching for " & Feature & "..."
Flag = False

For Each Cmd In Cmds
If Cmd.Type = AUTO_CIRCLE And UCase(Cmd.ID) = UCase(Feature) Then

tStartAng = Cmd.GetText(THEO_START_ANG, 0)
tEndAng = Cmd.GetText(THEO_END_ANG, 0)

Cmd.PutText tEndAng, THEO_START_ANG, 1
Cmd.PutText tStartAng, THEO_END_ANG, 1
Cmd.ReDraw

pic_Output.Print "Reversed start and end angles for " & Feature

txt_Feature.Text = ""
txt_Feature.SetFocus
Flag = True
End If
Next Cmd

If Flag = False Then
pic_Output.Print "Did not find " & Feature
End If

End Sub

cmmguy
02-11-2008, 08:33 AM
Thanks for posting.

Are you using this in a form?
Is the "txt_Feature.Text" a textbox?

jonny
02-12-2008, 10:25 AM
yes, I wrote this as a separate app that runs alongside PCDMIS. txt_feature is a textbox and pic_output is a picturebox. I only did that so that the user has a little more control over what is going on and so that I would be able to output to the picturebox.