AutoCAD Visual LISP / AutoLISP :: Custom Plot From Windows Explorer
Jan 27, 2012
Goal: using the native windows explorer, Open the folder containing the the multitude of drawings from different vendors and customers, usually 30 -40 .dwg files.
Highlight all the files, Right click print.behind the scenes without any further clicking or involvement from the user autocad plots the extents of model space of all the drawings to a designated plotter fit to 11x17 sheets.
Back in the day, there was an application that showed the drawing version # in the icon in windows explorer. That was good for then, because of the lack of object data in many of the vertices. The link I have isn't valid anymore and it didn't work in Win7.
What I'd like to have is something that will show the different Acad versions related to the icon using the product ID, for example:
2013 = Bxxx (???) I dont' have 2013 loaded 2014 = Dxxx (what happened to Cxxx?)
With the lack of backward compatibility between versions for objects (and I totally get that), it would be nice to be able to tell by an icon which version was used to create the drawing. I know the version information is stored in the header, which can be read, I'm just not a programmer.
I need to plot in a file some windows from a LISP, like (command "-plot"...
The windows are defined in a list of points like (((0 0 0)(10 10 0))...) defining lower-left and upper-right corners. Each .plt file must be saved with a different name.
Where else do they keep this setting? I only have found it in Active Layout in extended dada
(entget (vlax-vla-object->ename(vla-get-activelayout (vla-get-activedocument(vlax-get-acad-object)))) '("*")) The last pice of extended data is: ("PLOTTRANSPARENCY" (1071 . 0)) When i change it to 1 (setq layout(vla-get-activelayout (vla-get-activedocument(vlax-get-acad-object)))) (vla-getXdata layout "PLOTTRANSPARENCY" 'type 'data) (vlax-safearray-fill data '("PLOTTRANSPARENCY" 1)) (vla-setXdata layout type data)
it stays there (extended data), but the setting in Plot dialog box doesn't change!!! And it still prints no transparency.
It takes to save the drawing and reopen it again to see the change.
The command -PLOT does not have this setting as well, so my options back to VBA or Lisp, but HOW?
I am aware of the plot stamp available in the Plot Dialog box, however, we are looking at ways to imbed this info in the dwg. I currently have the WD_TB with an attribute for FULLFILENAME, an attribute for PLOT DATE, and an attribute for PLOT TIME12. So I get the information on the dwg. I would like to be able to run all these attributes as a string. I have tried FULLFILENAME|PLOT DATE|PLOT TIME12 with spaces, commas, ( ), " ", etc. and I do not know the proper syntax to get this to work. I have also tried (getenv "FULLFILENAME") or the getvar, in the title descriptions box.
Is it possible to open a dwg, change something and then plot a layout with visual lisp. This is my start. Opening is working, but plotting not. I have to switch between drawings before the function is going on. Sometimes it's plotting an empty sheet and otherwise an error: ERROR: Automation Error. Description was not provided.
I was on an older cad and am now moving to 2014.. my previous cad was heavily customized the old school way, I have decided to learn the CUI (and dynamic blocks)
My old cad has blocks on a drop down menu.. click BATH menu than WC icon, a macro sets the correct layer than inserts the WC.. took time to setup but pretty simple and straight forward (see attached for menu syntax). I also made a toolbar BATH and on that toolbar I made a WC icon.. that’s what I use the most
couple of questions
1) do I have to make a new command in CUI for each block to do the same thing? 2) I looked into the design center, but seems like its too many steps but it seems a toolbar with an icon on it, clicking the icon and a macro sets layer and insert block is still pretty quick..?? 3) if a toolbar with an icon is still a fast and less step method, can I open the block and somehow make an icon of it? if so where do I put it?
Right now I have a few lines in the ACADDOC.lsp file to set up the plot stamp for all users. I would like to just turn on the plot stamp and auto load a custom .pss file that I have set up.
Is it possible to create a lisp that would change the plot style table? I don't know of any variable to type to change that. We convert drawings from Solid works to AutoCad and use the basic monochrome plot style. I'd like to easily change that since the act of doing that is repeated many times.
I want to make a keyboard shortcut that will turn on/off my osnap, polar, and otrack.I would be fine with setting F3 to do this, or any other key really.I like to be able to turn these off on the fly, but it is getting old having to press all three.
I've successfully written a lisp routine to insert a scale bar dynamic block with attributes, gather the object id of a user selected viewport, and write fields to attributes for each of the numbers across the top of the typical scale bar as well as the scale name, for both architectural and civil units. I'm trying to come up with a similar dynamic blocklisp routine combination to do the same with view titles, and the associated scale callout. The catch in this case is that I'd like to display the scale as "NTS" if it isn't a proper scale. The "standardscale" object property option in the field dialog box gives me almost exactly what I want, except that non-standard scales are displayed as "CUSTOM" as opposed to "NTS". Moreover, I’d like this to update on the fly, if the viewport scale changes, the scale callout needs to change also, back and forth from “NTS” to a standard scale if need be.
is there a way to change that (CUSTOM NTS)? My research online seems to indicate that the nuts and bolts of fields are deeply rooted in ObjectARX, which is something I know very little about?
The natural followup to that question is, if I can't change "CUSTOM" to read "NTS", is there a way to wrangle this whole thing with reactors? I'm envisioning object reactors, created as a part of the insertion routine, for each individual instance of the block (there could very well be several in a layout, and multiple layouts in detail drawings), that would call another routine to evaluate the viewport scale, and if it didn’t match a list of standard scales, write NTS to the attribute. My issue is that reactors seem to only associate with one object, in this case that’d be the viewport, the reaction would cause the reactor to call the routine, but how does the routine know which block to update? Is there something from the viewport properties that I can add to the block name (or some other property) which will allow the routine to figure out which block to edit?
I’ve attached my scale bar code, and block, as reference context for how I plan to set the view title up.
I use DwgProps > Custom tag to log revisions to our company templates.Then when trouble shooting CAD issues I can look at what template rev level the drawing was started from.
Is there anyway that DwgProps can be removed from the drawing?
I am not looking for a solution to do this... I just wondered if there could be someway a particular drawing file might have somehow lost the DwgProps > Custom entries.
I'm trying to get familiar with AutoCAD. Google and didn't manage to solve a problem :
In AutoCAD LT 2013, I created a custom command called Special fillet :
Name : Special filletDescription : Round a polylineCommand display name : SFILLETMacro : ^C^C_fillet;p;r;0.1
I created two aliases at the end of acadlt.pgp :
SF, *SFILLET C, *COPY
When i type C, it works fine (just a test) but although it appears correctly in the Command prompt, SF doesn't work and it keeps telling me : UNKNOWN COMMAND "SF"
Last thing, if I create an icon in a toolbar with the special fillet command : it works fine...
I have tried everything even un-installing and re-installing. I have customized programs that have been working properly for months by many individuals. These include custom menus, toolbars and ribbon tabs. One day last week one of the ribbon tabs disappeared. The crazy thing is if I load the .cuix file as an Enterprise cui, everything is visible and works just fine. BUT, when I load it as a partial cuix file the ribbon tab does not show up. The custom menus come in, my custom toolbars work and show up just fine but the dag blasted ribbon tab won't show up.
Yes, it's marked as visible. I've done and redone the cui editor, customized my workspace again and again checking every piece of information. I need to have it loaded as a partial cui file as I am the author of these tools that hundreds of people in my company depend on.
Is there a way to get model space to "display plot styles" through a lisp routine or a script?
i'm currently setting up a whole bunch of custom tool palettes for the company I work for and instead of the icons displaying in their actual colour (at the moment they're green, which doesn't show up very well on the light grey background), I'd rather they show in the plotstyle assigned to the individual dwg's.
call up the page setup manager (while in model space) and click modify, you can then check the radio button to "display plot styles" in the top-right corner. But when you have around 100 - 200 blocks to change, that process can be rather time consuming and cumbersome!
How to add buttons and create my own ribbon in AutoCAD, but now I would like to be able to have buttons for two different schedules that I have created. While I can have a button start the schedule command it won't automatically pick the schedule that I want it to create.
I would like to build a custom button that mimics the FDO - Save as AutoCAD drawing functionality. Clicking this button brings up a wizard with too many clicks for how often the users will do it.
They will not want to load a script so a custom button is required. Also, I need to be able to dynamically set the new saved file name based on the source DWG file name.
I'm trying to write a simple Custom Command that sets any layer that matches "$-*" to a specific color. But as soon as AutoCAD sees the $, it thinks I'm trying to do a DIESEL expression. Supposedly, the quote marks specify that the enclosed characters should be treated as plain text, but that doesn't happen.Here's what I've got:
^C^C-LAYER;C;252;"$-*";;
And this is what I get:
Command: -LAYERCurrent layer: "$-HATCH-00-002-PW-BOAT"Enter an option [?/Make/Set/New/Rename/ON/OFF/Color/Ltype/LWeight/MATerial/Plot/Freeze/Thaw/LOck/Unlock/stAte/Description/rEconcile]: CNew color [Truecolor/COlorbook] : 252Enter name list of layer(s) for color 252 <$-HATCH-00-002-PW-BOAT>: "No matching layer names found.Enter an option [?/Make/Set/New/Rename/ON/OFF/Color/Ltype/LWeight/MATerial/Plot/Freeze/Thaw/LOck/Unlock/stAte/Description/rEconcile]: It stops, hanging at the incompleted -LAYER command prompt.
I have a problem that I cannot seem to solve. I have a drawings with a whole bunch of layout tabs that have a few viewports in each tab. One of these viewports on each layout tab is on the layer VIEWPORT. I did this so it would be easy to filter out the other viewports in the drawings. I am using the code below to change all of the viewports with the layer VIEWPORT to the Custom Scale 0.020833. This works for all of the layout tabs except the first tab. It will not for some odd reason work on the fist tab.
How I can tie a key from a custom dictionary to display in a field?
I know that I can dump the custom dictionary into global and the fields can track those values, but instead of strangling my available memory I'd rather track the dictionary key directly. How can I utilize the Entity name or the actual dictionary name & key?
i'm relatively new to lisp routines. I've been trying to create a routine that will create a custom block with attribute with an option to select which drawing border size is being used. This is what i've got so far;