Rassa12345 Posted April 5, 2015 Share Posted April 5, 2015 I have attempted to research this topic via Google to no avail as I do not know exactly what I am looking for. I am trying to develop a custom dialog box that will allow a user to input numbers in order to create specific drawing. The drawing itself is rather uncomplicated. It is a rectangle with an offset that will have a circles at intervals of 24" which is contingent on the rectangle dimension. Similar to this image: This is the custom dialog box code I have manipulated. PROCEDURE CreateDialog; VAR id: LONGINT; result : LONGINT; BEGIN id := CreateLayout('Panel',TRUE,'Generate', ''); CreateGroupBox(id,4,'Shell',TRUE); CreateEditText(id,5,'Width',26); CreateEditText(id,6,'Length',26); CreateGroupBox(id,7,'Armature',TRUE); CreateEditText(id,8,'Width Offset',26); CreateEditText(id,9,'Length Offset',26); SetFirstLayoutItem(id, 4); SetFirstGroupItem(id,4,5); SetRightItem(id,5,6,0,0); SetBelowItem(id,4,7,0,0); SetFirstGroupItem(id,7,8); SetRightItem(id,8,9,0,0); result := RunLayoutDialog(id,NIL); END; RUN(CreateDialog); I understand how to command vectorscript to draw a rectangle but I am unsure how to connect that command to the dialog box and furthermore I do not know how to make the circles contingent on the overall dimensions of the rectangle. I am not looking for someone to do my work, I just need assistance on where to look for help. I have read over the Vectorscript reference and done some searches on the function reference but neither explain a great deal to those who are not familiar with coding language. Any pointers? Thank you Quote Link to comment
James Russell Posted April 5, 2015 Share Posted April 5, 2015 (edited) So I couldn't sleep. Learning challenge accepted! Seriously though the knowledge base's four examples on this subject are pretty hardcore for beginning! You might find a few bits here on the forum on this stuff but as to the logic I have no idea if it's actually document properly anywhere. Below is my attempt at your dialog problem. They are a mind bender and I had to refresh my memory with one of my old scripts to see how I'd done it previously. Sorry it's not annotated better but at least it will give you structure. I've changed most of your fields to Real values as text would just mean an extra conversion step, downside is Static Headers, so you'll noticed the numbering changed in the layout order. I've included a GetEditText field still just so you've got the example for headings and such. Let me know how you go! J PROCEDURE CreateDialog; VAR success : BOOLEAN; id, result : LONGINT; WidthReal, LengthReal, WidthOffReal, LengthOffReal : REAL; ExSTR : STRING; PROCEDURE Dialog_Handler (VAR item :LONGINT; data :LONGINT); {---------- Values to Vars --------------} BEGIN CASE item OF 1: BEGIN success := GetEditReal(id,6,3,WidthReal); success := GetEditReal(id,8,3,LengthReal); success := GetEditReal(id,11,3,WidthOffReal); success := GetEditReal(id,13,3,LengthOffReal); GetItemText(id,15,ExSTR); END; END; END; {---------- Layout Creation --------------} BEGIN id := CreateLayout('Panel',TRUE,'Generate', ''); CreateGroupBox(id,4,'Shell',TRUE); CreateStaticText(id,5,'Width',28); CreateEditReal(id,6,3,100,26); CreateStaticText(id,7,'Length',28); CreateEditReal(id,8,3,200,26); CreateGroupBox(id,9,'Armature',TRUE); CreateStaticText(id,10,'Width Offset',28); CreateEditReal(id,11,3,25,26); CreateStaticText(id,12,'Length Offset',28); CreateEditReal(id,13,3,50,26); CreateStaticText(id,14,'This is an Example Text Field',40); CreateEditText(id,15,'An Example Text Field',35); SetFirstLayoutItem(id, 4); SetFirstGroupItem(id,4,5); SetRightItem(id,5,7,0,0); SetBelowItem(id,5,6,0,0); SetRightItem(id,6,8,0,0); SetBelowItem(id,4,9,0,0); SetFirstGroupItem(id,9,10); SetRightItem(id,10,12,0,0); SetBelowItem(id,10,11,0,0); SetRightItem(id,11,13,0,0); SetBelowItem(id,9,14,0,0); SetBelowItem(id,14,15,0,0); {---------- Run the Layout --------------} IF VerifyLayout(id) THEN BEGIN If RunLayoutDialog(id, Dialog_Handler) = 1 THEN BEGIN {---------- Verify and Make your Rectangles here! --------------} Message(Concat('WidthReal: ',WidthReal,' Length Real: ',LengthReal,' Width Offset Real: ',WidthOffReal,' Length Offset Real: ',LengthOffReal,' Random Text: ',ExSTR)); End; End; END; RUN(CreateDialog); Edited April 5, 2015 by James Russell Quote Link to comment
Rassa12345 Posted April 5, 2015 Author Share Posted April 5, 2015 I have to spend sometime dissecting this code. Thanks for the assistance. Quote Link to comment
Hippocode Posted April 6, 2015 Share Posted April 6, 2015 Honestly I'd skip the dialog and make it a simple rectangular plug-in instead. Why ? - It's regenerative, if you change your mind you can edit it at the fly. Now you need to delete your content and reload the dialog. - The width / length is handled by the rectangular object, the other data can be parameters editable in the oip Quote Link to comment
Rassa12345 Posted April 6, 2015 Author Share Posted April 6, 2015 Honestly I'd skip the dialog and make it a simple rectangular plug-in instead. Why ? - It's regenerative, if you change your mind you can edit it at the fly. Now you need to delete your content and reload the dialog. - The width / length is handled by the rectangular object, the other data can be parameters editable in the oip I did that initially, but I am not sure how I would incorporate the other aspects of the drawing into the OIP. Any information to share on doing this? Thanks. Quote Link to comment
Hippocode Posted April 6, 2015 Share Posted April 6, 2015 It's all about math. Just calculate the position you need each circle or whatever content to be relative within your rectangle. You can create each circle on the exact spot or create them at 0,0 and move them to each position whichever you like. Quote Link to comment
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.