Wednesday, August 28, 2013

New Blog Location...

There will be no more new posts on this blog after this one.  We would like you to follow us to our new blog which is www.talkaboutcad.blogspot.com...  We desire to share tips, tricks, new macros, or just general cadding information a couple times a week, so please visit our new blog frequently to see what is new!

Thank you!

Friday, August 2, 2013

Inventor Dynamic Simulation...

So last night I decided to mess around with Dynamic Simulation in Autodesk Inventor, and the video below is what I ended up with.  I watched a video of someone simulating the motion of a trebuchet, so I decided that i was going to build a very basic catapult and see if I could get the simulation to work on it.  So, below is my very basic catapult with the simulated arm motion and ball being thrown.

**fixed text visibility on the given background.

Thursday, August 1, 2013

Check out our Company Site!

Please visit our company site.  On there you will find out who we are and what we do. 
May be you have a project or some standard development task that you need to get complete, but don't have the time to.  Fill out the contact us form and let us know what your project is and maybe we could help you out.
Also, if anyone has any technical questions dealing with AutoCAD, Inventor or SolidWorks we can help.  Send us an email and then we can create a post on this blog covering the issue.

cadconsultingllc.weebly.com

Email address: cadconsultinginc@gmail.com

Thank you!

Tuesday, July 16, 2013

SaveAs Rule in Inventor ilogic

I use Inventor ilogic whenever possible, but one thing that has caused me problems is the fact that I couldn't save out a modified ilogic assembly without screwing up other drawings that were attached to that assembly...that is until now...
With the help from another blog; I was able to create a rule in ilogic that would perform a saveas off the assembly and then in turn would also run the rule under each part to create a brand new assembly and brand new parts within the assembly so that if you were to modify the main assembly this would not be affected by those changes.

Below is the code required for the saveas of an assembly:

'define the active document
oDoc = ThisDoc.Document
'create a file dialog box
Dim oFileDlg As inventor.FileDialog = Nothing
InventorVb.Application.CreateFileDialog(oFileDlg)

'check file type and set dialog filter
If oDoc.DocumentType = kPartDocumentObject Then
oFileDlg.Filter = "Autodesk Inventor Part Files (*.ipt)|*.ipt"
Else If oDoc.DocumentType = kAssemblyDocumentObject Then
oFileDlg.Filter = "Autodesk Inventor Assembly Files (*.iam)|*.iam"
Else If oDoc.DocumentType = kDrawingDocumentObject Then
oFileDlg.Filter = "Autodesk Inventor Drawing Files (*.idw)|*.idw"
End If

'set the directory to open the dialog at
oFileDlg.InitialDirectory = ThisDoc.WorkspacePath()
'set the file name string to use in the input box
oFileDlg.FileName = iProperties.Value("Project", "Project") & "_" & iProperties.Value("Summary", "Title")

'work with an error created by the user backing out of the save
oFileDlg.CancelError = True
On Error Resume Next
'specify the file dialog as a save dialog (rather than a open dialog)
oFileDlg.ShowSave()

'catch an empty string in the imput
If Err.Number <> 0 Then
MessageBox.Show("No File Saved.", "iLogic: Dialog Canceled")
ElseIf oFileDlg.FileName <> "" Then
MyFile = oFileDlg.FileName
'save the file
oDoc.SaveAs(MyFile, True) 'True = Save As Copy & False = Save As
End If

Now in my example; I have created a custom naming convention of the assembly that is controlled by the Project value, and the Title value within the iproperties. (shown below)
oFileDlg.FileName = iProperties.Value("Project", "Project") & "_" & iProperties.Value("Summary", "Title")
Now, to cause the parents under the assembly to saveas with predetermined values run the part rule within the assembly. (shown below)
iLogicVb.RunRule("2x4tube_1:1", "saveas")

When you run the rule it will automatically open a SaveAs dialog box for the assembly and once you hit save it will start running the SaveAs dialog for all the parts in the assembly that you call for the "RunRule".

Tuesday, March 12, 2013

Changing text style font with a Macro...

I know that one thing some people have problems with is when you xref or insert a title block into a drawing file; the text style changes back to the original font type.  This was happening with the title block that our company is standardizing.  So, I came up with a quick fix for our design group to take the standard text style and change the font type to the proper font so that the text would look the way it was meant to.

Here is the macro:
-STYLE;STANDARD;Arial Unicode MS;.125;;;;;

So, first in this code is obviously the command; which in this case is our text style command.  Then you will list the text style that you are wanting to change; next will be the font style that you are wanting to change it to, and then finally the height of the text.  Last there are a bunch of semi-colons attached to the end of the code to enter through other questions that comes with changing the text style, but none of them applied in this case.

Below is an example of this being used in one of my titleblock macros for inserting a title block and creating new layers for discipline specific drawings:

^C^C-STYLE;STANDARD;Arial Unicode MS;.125;;;;;ATTDIA;0;layout;set;layout1;
^C^C-insert;D-SIZE_BOTTOM(22X34)(REV_D);0,0;XYZ;1;1;1;0;;;;;;^C^C-INSERT;*REV-TEXT.DWG;0,0;1;0;^c^cpsetupin;"D_SIZE-PID.DWG" "*";

^c^c-plot;n;layout1;11x17;;n;y;n;
-LAYER;NEW;D_EQ;LTYPE;CONTINUOUS;D_EQ;LWEIGHT;.020;D_EQ;COLOR;11;D_EQ;;
-LAYER;NEW;D_PR;LTYPE;CONTINUOUS;D_PR;LWEIGHT;.030;D_PR;COLOR;14;D_PR;;
-LAYER;NEW;D_UT;LTYPE;CONTINUOUS;D_UT;LWEIGHT;.015;D_UT;COLOR;9;D_UT;;
-LAYER;NEW;D_FIT;LTYPE;CONTINUOUS;D_FIT;LWEIGHT;.015;D_FIT;COLOR;7;D_FIT;;
-LAYER;NEW;D_INST;LTYPE;CONTINUOUS;D_INST;LWEIGHT;.010;D_INST;COLOR;4;D_INST;;
-LAYER;NEW;D_FUT;LTYPE;PHANTOM;D_FUT;LWEIGHT;.010;D_FUT;COLOR;6;D_FUT;;
-LAYER;NEW;D_EXIST;LTYPE;DASHED;D_EXIST;LWEIGHT;.010;D_EXIST;COLOR;5;D_EXIST;;
-LAYER;NEW;D_TXT;LTYPE;CONTINUOUS;D_TXT;LWEIGHT;.015;D_TXT;COLOR;7;D_TXT;;

-LAYER;NEW;VIEWPORT;COLOR;211;VIEWPORT;PLOT;NO;VIEWPORT;;
^C^C_EATTEDIT;7.153207,1.737254,0.000000;^C^C-LA;SET;VIEWPORT;;^c^c-vports;1,21.4999;27.5,2;^C^C-LA;SET;D_PR;;^C^C_.INSERT;LOGO-CALLOUT;18.25,1.375,0;XYZ;1;1;1;0;-DIMSTYLE;R;EPIC;^C

Monday, December 31, 2012

Excel and AutoCAD LT diesel macro...

Last week I had a question posed to me about linking an excel document to Autocad and then having a diesel macro that establishes a user variable and then returns that value to the excel document which in turn returns another variable to Autocad for labeling functionality.  For instance if you were assigning names to office spaces and you had them all in an excel document.  You could create a vlookup function in a cell, and have the cell that autocad will return a value to as the one that the vlookup is looking at to return your name. 

The diesel macro establishes a user variable is the indexing number and another one as the incrementing number.  Each time you use the command it will update one table which in turn updates the excel document and returns you the name that is associated with that number.

Is there anyone that has needed this function or any one who would like to have this function?  If so, keep reading this post.

Alrighty…the instructions to automating (fingers crossed) the names being inserted by table and then exploded.
First up…creating a new table style:

In the command line type: tables  

Then hit enter.

The following dialog box should come up.

Once you click the “New…” button enter whatever name you want to name it.
In the next dialog box follow as shown in pic below


In the borders tab change the border to be “No Border”
Then hit okay.
Once done you will go back to the main dialog for the table styles.
Make sure that the current style set is the one that you just created.

Now comes is the fun part…
First…lets create a table that is (1) column x (1) row. And then insert that into your drawing.
Now pick on that table and highlight cell “A1”…
Then on the ribbon panel you will see a button that says field…click that button. 


Then in the field dialog change your “Field category:” to show “Other”.
In the “Field names:” column pick “DieselExpression”.
And then in the box to the right enter the diesel expression that is shown.
See pic below on next page for clarification…
Once the expression is entered then click the okay button to get out of the dialog box.  And then escape out of your table.  If done right then the value in the cell should look like what is in the above picture…gray with white text.

Next is some of the tricky stuff.
Pick the table that you just created
And click on the link cell button as shown in picture below.

Then follow the steps that are shown below in pictures.
 
 
 
Here is where you will select the excel file with the names that you are going to be generating in your cad file.

Be sure to select the “link to range” button and then put a random cell in there that you can remember for later when you have to get into your excel doc and create a vlookup value.

p.s. you have to do at least a 2 cell range or it won’t take it.  Also, make the sheet a different one from where the names are as well.

Now…we need to get into the excel file, and I am kind of hoping that you have the names numbered 1-300 or something because it will make it a lot easier, but if you have a different case of associating a number to names then leave a comment about what you are needing and I will see what I can do to help remedy the issue.
In the excel doc…on the sheet with the names; off to the right of those columns pick an empty cell and create a vlookup…the “Sheet?!A!” is referring to whatever sheet and cell you linked the table to that you have already created.

=vlookup(Sheet?!A1,A1:b300,2)

Make sure you save the excel doc and then close it…
Next…
We are going to go through the creating the datalink to the same excel doc but this time the linked range is going to be the one that is going to show the name in it.
When creating this datalink…I would recommend naming it “names2” just because that name is already built into the macro.
Now once you have that done you are basically ready to create the button with the macro…
Below is the macro for the button…

*^C^Cupdatefield;all;;tabledit;\;datalinkupdate;w;all;;-table;l;names2;\explode;$m=$(getvar,lastpoint);setvar;userr1;$m=$(+,$(getvar,userr1),$(getvar,userr2))

It is amazing how short it is, and yet there is so much work prior to being able to use it.
When you run the macro the first thing it will do is prompt you to pick a table…and you will pick the initial table that you built that has the updating variable number.  Once you pick it then the next thing you do is place the name.
Once you place it you will notice that it has borders…and that is because it is inserted as a block and then explode in the macro.  The border lines won’t print out on your drawing.
Again, we are using userr1, and userr2; so userr2 always stays as a value of 1.
Okay…I think that is it…at least I hope that is it.
Let me know if there is anything else that you need clarified and I will do my best to help clarify things.

Thursday, December 20, 2012

Instrumentation symbols with automated numbers...(diesel macro)

Working in the Process and Mechanical field you come across a lot of things that need to be automated so that it makes things a little easier on you as a designer.  So, one of the latest Diesel macros that I wrote is for automated ISA Instrumentation symbols.  The good thing is that this code can be used to create user commands for all instrumentation symbols and it will flow seamlessly with each symbol placed. 

Okay, now to the code...

*^c^c$M=$(+,$(getvar,USERR1),$(getvar,USERR2));setvar;USERR1;
$M=$(+,$(getvar,USERR1),$(getvar,USERR2));-insert;
DISCRETE-PRIMARY;\1;1;\$(GETVAR,USERR1);LIT;;;

The first portion of the code prior to the insert command is doing the math to increment the variables in the symbol.  In this example you can see that we are using USERR1 & USERR2; where USERR1 is the initial number that you want to use, and then USERR2 is the variable that increases the value of USERR1. 

The coding for the insert command may vary, but for mine after I call the symbol name I have a \1;1;\.  This is the order of that bit of code...insertion point, scale x-coordinate, scale y-coordinate, rotation.

Once you go through that then the first attribute that is being filled in is the number; so, we tell it to get the USERR1 variable, and then the next one you can leave it as a user input by substituting "LIT" with "\".  Then depending on how many other attributes you have attached to the symbol you will need a semicolon for each attribute after the "LIT" for it to be able to repeat the command properly.