All Activity
- Past hour
-
mhupp started following Update and Fillet Polylines Multiple
-
I made this to run on our CNC profiles. It would always throw a tool path error if the polyline had corners the tool couldn't fit into. Because our profiles where generated from a laser outline and then cleaned by hand. A lot of the poly segments were very small and tedious to fix. using poly fillet would update all vertex and fillets to the radius you set. so if your profile had a larger radi it would create big wings. (see example) This only fillets if the radi is smaller then the tool dia or if two joined line segments can run fillet command. creates an old red outline poly on check layer to compare against. leans heavily on vlax-curve visual lisp functions. I think this took me about 2 week on and off to write up. updating the one profile could take 10 mins to multiped hours to fix manually. switching between AutoCAD and the CNC software to see if it would throw an error or finally pass. I think it became obsolete with the update to the CNC software. PolySmooth.lsp example.dwg
- Today
-
Luke P joined the community
-
Inspired by SWL210 tonight... An update to this one.... it is a bit more complex then just grabbing an entity or entering a text value... Went down the grread route which gave the results I want. Command is (entortext "Message" '(List 1) '(List 2) ) Message: Text message such as "Enter a value, or select some text" '(List 1) - Control characters to end the selection process in ASCII codes: 13 = Enter, 32 = Space ('List 2) - Text Control for selections: "A" - Alphabetical characters only (a, A - z, Z) as text entry or any text entity selection "N" - Numerical Characters only (1-9 .) as text entry, or pure numerical text entity selection "P" - Punctuation characters (< > , . / ?.....) as "A" but text is only punctuation "M" - Mathematical modifiers (+ - / *.....) as "A" but text is only numerical modifiers (I should change this t be the same as "N") "E" - any entity is selectable. Without E is selection is text only List 2 can be joined eg '("A" "M" "N" "P") to select any text (also '("N" "P") works and enter any text Special option: If 'N' is used only numerical text is selectable, 'A' will allow any text entity to be selectable. Combined also works for selecting any text (but only entering A-Z, 1-9 here no punctuation) For example "Select an entity or 'O' for Options") '(79 111) '("E") Note: Distinguishes between cases.... Note here 'O' for options, for example, excludes that as part of a text string to be returned - selection is ended on 'O' There are examples, entorent, entorstring, entorvalue to look at in there. Returns: If text is entered: '("text", ASCII of enter method (13, 32..), nil) If Entity is selected: '(<entity name>, point selected, insert point of selection If Escape pressed: ("Lucky escape" 27 nil) - escape is captured and returned to the calling function - handy if selecting in a while loop If that makes sense, have a play. Oh, and an easter egg for you which might or might not work... ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (defun EntorCommand (/ *error* RunLispCommand RunNativeCommand MyCommand LispCheck Result ErrorMessage CommandStatus ) (defun *error* (Msg) (if (> (getvar "CMDACTIVE") 0) (command) ) ; ;; Cancel any native command still running. (cond ((null Msg) (princ "\nCommand ended with error.")) ((wcmatch (strcase Msg) "*BREAK*,*CANCEL*,*EXIT*" ) (princ "\nCommand cancelled.") ) (t (princ (strcat "\nCommand error: " Msg ))) ) ; End Cond (princ) ) ; End Defun *error* (defun RunLispCommand (LispFunction /) (apply LispFunction nil) ) ; End Defun RunLispCommand (defun RunNativeCommand (CommandName /) (command CommandName) (while (> (getvar "CMDACTIVE") 0) (command pause) ) ; End While ) ; End Defun RunNativeCommand (setq MyCommand (strcase (getstring "\nPausing Text Selection.\n(Command Line to) Enter Command: " ))) (setq LispCheck (vl-catch-all-apply 'eval (list (read (strcat "C:" MyCommand) )))) (if (and LispCheck (not (vl-catch-all-error-p LispCheck)) ) ; end and (progn ; LISP (setq Result (vl-catch-all-apply 'RunLispCommand (list (read (strcat "C:" MyCommand))))) (if (vl-catch-all-error-p Result) (progn ; LISP Error (setq ErrorMessage (vl-catch-all-error-message Result)) (if (wcmatch (strcase ErrorMessage) "*BREAK*,*CANCEL*,*EXIT*,*ABORT*" ) (princ (strcat "\nLISP command " MyCommand " cancelled: " ErrorMessage )) (princ (strcat "\nLISP Command " MyCommand " ended with an error: " ErrorMessage )) ) ; End If ) ; End Progn (progn ; LISP Completed (setq CommandStatus "completed") ) ; End Progn ) ; End If ) ; End Progn (progn ; Native AutoCAD Command (setq Result (vl-catch-all-apply 'RunNativeCommand (list MyCommand) )) (if (vl-catch-all-error-p Result) (progn ; Native Command Error (setq ErrorMessage (vl-catch-all-error-message Result)) (if (> (getvar "CMDACTIVE") 0) (command) ) ; Ends command if running (if (wcmatch (strcase ErrorMessage) "*BREAK*,*CANCEL*,*EXIT*,*ABORT*") (princ (strcat "\nCommand " MyCommand " cancelled: " ErrorMessage )) (princ (strcat "\nCommand " MyCommand " ended with an error: " ErrorMessage )) ) ; End If ) ; End Progn (progn ; Native Command Completed (setq CommandStatus "completed") ) ; End Progn ) ; End If ) ; End Progn ) ; End If (princ "\nEnded Command") (princ) ) ; End Defun ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;Ent Or Text options: ;;msg: Message to user ;;EndString: ASCII character code List '(13 32....) that will end the selection process. Note: add upper and lower cases ;;TextTypes: A list of letters to accept A: Alphabet, E: Entities, M: Mathematical symbols, N: Numbers, P: Punctuation symbols (defun EntOrEnt (msg EndString / TextTypes)(EntorText msg EndString '("E"))) ; entities only ; Equivalent to EntSel + Escape! (defun EntOrStr (msg EndString / TextTypes)(EntorText msg EndString '("N" "M" "A" "P" "E"))) (defun EntOrVal (msg EndString / TextTypes)(EntorText msg EndString '("N" "M" "E"))) (defun EntorText ( msg EndString TextTypes / MyTextType EndLoop grsel sela sel MyEnt MyValue MyCharacters MyCommand enta entb pt lw MyList MyTextString EscapeCode NestedSelection) (setq EscapeCode nil) (if (= (type EndString) 'LIST) (progn) (setq EndString (list 13 32)) ;; 13: Enter, 32: Space ('T' in getstring) ) ; End String (if (= (type msg) 'Str) (princ msg) (princ (setq msg "Select or enter text: ")) ) (if (= (type TextTypes) 'LIST) (progn) (setq TextTypes (list "A" "N" "P" "M")) ;; A: Alphabet, N: Numerical, P: Punctuation, M: Mathemtatical ) ; End String ;;Starting values (setq MyValue "") (setq MyEnt (list)) (setq EndLoop "No") (setq MyCommand 0) (setq MyTextType nil) (if (or (member "N" TextTypes)(member "n" TextTypes)) (setq MyTextType (strcat (if (= MyTextType nil) "" MyTextType) "1234567890.,"))) ; Numerical (if (or (member "A" TextTypes)(member "a" TextTypes)) (setq MyTextType (strcat (if (= MyTextType nil) "" MyTextType) "ABCDEFGHIJKLMNOPQRSTUVWXYZ"))) ; Alphabet (if (or (member "P" TextTypes)(member "p" TextTypes)) (setq MyTextType (strcat (if (= MyTextType nil) "" MyTextType) "`#`~`@\\|<`,>`.`?/¬``!\"£$%^&`*()`-_="))) ; Punctuation (if (or (member "M" TextTypes)(member "m" TextTypes)) (setq MyTextType (strcat (if (= MyTextType nil) "" MyTextType) "=/+-`*`.`,"))) ; Maths Functions (if (or (member "E" TextTypes)(member "e" TextTypes)) (setq MyTextType (strcat (if (= MyTextType nil) "" MyTextType) ""))) ; Entity (implied in code if not listed) (if (= MyTextType nil)(setq MyTextType "1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ")) ;;Loop for grread function (while (= EndLoop "No") (setq grsel (vl-catch-all-apply 'grread '(nil 13 2))) ; catch errors (escape key) (if (vl-catch-all-error-p grsel) ;; escape pressed, end loop (progn (setq EndLoop "Yes") (princ (strcat "\n" (setq MyValue "Lucky escape"))) (setq escapecode 27) (setq MyEnt nil) (if lw (redraw lw 4) ) ) ;end progn escape pressed (progn (setq sela (car grsel)) (if (= sela 5) ; Highlight on hover (progn (if lw (redraw lw 4) ) ;Remove any highlight (if (and (setq pt (cadr grsel) ) (setq lw (ssget pt)) (setq lw (ssname lw 0)) ) ; end and (redraw lw 3) ) ; end if ) ; end progn ) ; end if (if (or (= sela 2)(= sela 3) ) ; text entry or mouse click (progn (setq sel (nth 1 grsel)) (if (= (type sel) 'LIST) (progn (setq MyList '("TEXT" "MTEXT" "RTEXT" "ATTRIB" "ATTDEF" "DIMENSION" "INSERT")) ; list of entity types allowed to select (if (or (member "E" TextTypes)(member "e" TextTypes)) (setq MyList (append MyList (list "LINE" "POLYLINE" "3DPOLYLINE" "LWPOLYLINE" "MLINE" "SPLINE" "POLYGON" "MPOLYGON" "VIEWPORT" "WIPEOUT" "ELLIPSE" "CIRCLE" "ARC" "POINT" "HATCH" "SURFACE" "SOLID3D" "SHAPE" "FACE" "3DFACE" "SOLID" "3DSOLID" "TRACE" "RAY" "XLINE" "RASTER" "XREF" ))) ) ;;SP TO complete this list with: ;;ACAD_PROXY_ENTITY, BODY, HELIX, IMAGE, LEADER LIGHT, MULTILEADER, MLEADERSTYLE, ;;OLEFRAME, OLE2FRAME, REGION, SECTION, SEQEND, SHAPE, SUN, TABLE, TOLERANCE,UNDERLAY, VERTEX, (setq MyEnt (nentselp sel)) (cond ((or (= nil MyEnt) (= (member (cdr (assoc 0 (entget(car MyEnt)))) MyList) nil) ) ; Endor (progn (Princ "\nMissed! Try again.\n")(princ msg) ;; or add in here 'ssget' (setq MyEnt nil) ) ) ( T ;; Text selected (if (equal TextTypes '("E"))(princ ": Ahh, you selected a thing")(princ ": Fantastic selecting ability.")) ;;Check if numerical only selection (if (or (equal TextTypes '("N")) (equal TextTypes '("n")) ) ; endor (progn (setq entb (last (last (nentselp (last grsel))))); grsel point value (if (and (/= entb nil) (/= (type entb) 'real)) (if (wcmatch (cdr (assoc 0 (entget entb))) "ACAD_TABLE,*DIMENSION,*LEADER")(setq MyEnt (list entb (last grsel)))) (progn) ) (setq MyTextString (cdr (assoc 1 (entget (car MyEnt)))) ) (setq mytextString (LM:Unformat MytextString nil)) ; Unformat string (if (or (wcmatch (strcat MyTextString) "*[~1234567890`.`,]*") (and (vl-string-search "." MyTextString) (vl-string-search "." MyTextString (+ (vl-string-search "." MyTextString) 1)) ) ; end and ) ; endor (progn (princ (strcat " However, selection is not numerical,\n" Msg ", or [esc]: ")) (setq MyEnt nil) ) ; end progn (progn (setq EndLoop "Yes") ) ) ; end if number check ) ; end progn numerical (progn (setq EndLoop "Yes") ) ; end progn ) ; end if ) ; end cond T ) ; end conds (if lw (redraw lw 4)) ; remember to (redraw xyz 3) in originating code to keep highlight (setq sel nil) ) ; end progn ; selection is list (progn (setq MyCharacters (list 137)) ; list of single characters to accept (if (member 32 Endstring)(progn)(setq MyCharacters (cons 32 MyCharacters))) ; add [space] if 't' (if (or ;;limit characters able to able to be used ;; remove escape keys later (wcmatch MyTextType (strcat "*" (strcase (chr sel)) "*"));; Strcase to include caps (= sel 92) ; '\' character for commands (member sel MyCharacters) ) ; endor (progn (if (= sel 92) ;; If double '\\' enter commands - check if '\' entered (progn (setq MyCommand (+ MyCommand 1)) (if (= MyCommand 2) (progn (princ (chr 8)) ; remove last '\' from command line (setq MyValue (vl-string-right-trim (chr 92) MyValue)) ; remove '\' from result (EntorCommand) (setq MyCommand 0) (setq sel nil) (princ "\nResume Text Selection.\n")(princ MSG)(if MyValue (princ MyValue)) ) ; end progn command = 2 (progn (if (member sel EndString) ;; remove escape keys from MyValue (progn) (progn (princ (chr sel)) (setq MyValue (strcat MyValue (chr sel) )) ) ; end progn ) ; end if ) ; end progn ) ; end if ) ; end progn (progn (setq MyCommand 0) (if (member sel EndString) ;; remove escape keys from MyValue (progn) (progn (princ (chr sel)) (setq MyValue (strcat MyValue (chr sel) )) ) ; end progn ) ; end if ) ; end progn ) ; end if ) ) (if (member sel EndString) ; enter (progn (setq EndLoop "Yes") (setq EscapeCode sel) ) ; end progn (progn ) ) ; end if (if (= sel 8) ; backspace (progn (if (> (strlen MyValue) 0) (progn (setq MyValue (substr MyValue 1 (- (strlen MyValue) 1))) (princ (chr sel)) ) ; end progn ) ; end if ) ; end progn (progn ) ) ; end if ) ; end progn ) ; end if list ) ; end progn ) ; end if text / mouse entry ) ; end progn ) ; end if catch-all-error ) ; end while (if (or ( = (length MyEnt) 0)(= MyEnt nil)) ;; if no entity selected.. text entry (progn ;; If text is entered ) ; end progn (progn (setq enta (car MyEnt)) (setq pt (cdr (assoc 10 (entget enta))) ) (setq entb (last (last (nentselp pt)))) ;; use sel? ;; nested entities (if (and (/= entb nil) (/= (type entb) 'real) (wcmatch (cdr (assoc 0 (entget entb))) "ACAD_TABLE,*DIMENSION,*LEADER") ) ; end and (setq MyValue entb) ; If entity is DIM, Table, Leader (setq MyValue enta) ; ELse entity ) ; end if ) ; end progn ) ; end if ;;Result - '(MyValue Pt) ;;'Ended ##' : An escape character code if entered ;;'Lucky Escape' : Escape key pressed ;;<Entity name: ##> : The selected entity ;;Other character : Entered Characters ;;(cadr grsel) - mouse point ;;pt - entity insert point (assoc 10) (if EscapeCode (setq MyValue (list MyValue EscapeCode nil)) (setq MyValue (list MyValue (cadr grsel) pt)) ) MyValue ) Al Still thinks this is a native command "EntOrText" by the way...
-
Margo App joined the community
-
Xref hatches plot solid black and fonts change on my machine only
Paul Li replied to xurshid_viewport's topic in AutoCAD Beginners' Area
Double posted -
Paul Li started following Xref hatches plot solid black and fonts change on my machine only
-
Xref hatches plot solid black and fonts change on my machine only
Paul Li replied to xurshid_viewport's topic in AutoCAD Beginners' Area
Typically etransmit should be used. This way any fonts and plot styles can be packaged along with xrefs in the zip file. This is what I would request from the architect. But hatches plotting solid black is very odd. Could you share a sample dwg that includes theses hatches for us to test? -
So in keeping with posting some of my LISPs, I used this just the other day, and just was reminded with the recent resurrection of the Fillet 0 issue thread where the OP was doing 40,000, not sure what LISP they used. Per the latest resurrection, setting FILLETPOLYARC setting may or may not help depending on what you are trying to fillet. The few times I have seen Fillet 0 fail with the P option was when the fillet radii completed something like a half circle when adjacent corners are filleted (something like the ends of a slot). This can be handy dandy. There are others like this around. For my use this was better than a few of the ones I tried. You may need to change the FILLETPOLYARC=0 if you have issue using this with Radius=0. In those situations when I had an issue, the LISP just doesn't do anything to those fillets, so I just go back with a small radius and change them, then you should be able to Fillet=0 those. (defun c:MF () (c:MultiPolyFillet) ) (defun c:MultiPolyFillet (/ radius ss i ent) (setq radius (getdist "\nFillet radius: ")) (if radius (progn (setvar "FILLETRAD" radius) (setq ss (ssget '((0 . "LWPOLYLINE,POLYLINE")))) (if ss (progn (setq i 0) (while (< i (sslength ss)) (setq ent (ssname ss i)) (command "_.FILLET" "_P" ent) (setq i (1+ i)) ) ) ) ) ) (princ "MultiPolyFillet complete.") (princ) ) (princ "\nMultiPolyFillet loaded. Type MultiPolyFillet or MF to run." ) (princ)
- 1 reply
-
- 3
-
-
Fillet polylines to radius 0 not working
SLW210 replied to claire2017's topic in AutoCAD 2D Drafting, Object Properties & Interface
The OP and the 2nd person with a problem fixed their issues with resetting AutoCAD and resetting their profile. FILLETPOLYARC, can be handy set to 1 if you need to Fillet arc segments. Though it has it's faults. -
Fillet polylines to radius 0 not working
Peter de Vries replied to claire2017's topic in AutoCAD 2D Drafting, Object Properties & Interface
Hi everyone, I've just read about this thread because I encountered the same issue of not being able to fillet a polyline with radius 0 when using the p-option. It works fine if I select separate straight sections of the polyline though, but that's not what I want. So, looking a bit further, I found the resolution to my problem in the systemvariable 'FILLETPOLYARC'. When setting this variable to '1', fillet radius 0 on polylines doesn't work. Setting this variable to '0', however, results in expected behaviour, filleting with another radius, thereby changing the existing arc segments by their new radius - including radius of 0. Let this tip help us all further in our (sometimes) struggle with Autodesk adding variables in new releases which change our expected ways of working. And remember, set the 'FILLETPOLYARC' variable to '0' Cheers! Peter -
Peter de Vries joined the community
- Yesterday
-
Henchiri joined the community
-
DIYORBEK DUSHANOV joined the community
-
How do you modify a 3D solid without rebuilding it?
SLW210 replied to indiancad's topic in AutoCAD 3D Modelling & Rendering
That really depends on the situation. If pretty simple to begin with it may be quicker to redo from the beginning. If not simple to redo, face editing can be quick and accurate and many options there, though just creating a new solid and using Subtract and/or Union could be the better option. Like I stated it really depends on the model and the change required. -
GitHub vs APPLOAD: Why is our global impact invisible?
VicoWang replied to VicoWang's topic in AutoLISP, Visual LISP & DCL
Especially welcome and invite developers, especially those in retirement status, to share and update the tools (plugins) you have created through VedaCAD, so that more people can benefit from your creations. These repositories for VCID's results will no longer fade away with time; they will enable those in need to obtain and use them. Especially, VedaCAD is now able to handle the release of plugins at the MSI level (official store). For any VedaCAD usage issues and suggestions, please feel free to contact me directly: vico@vedacad.com - Last week
-
STEP vs SAT: Which one preserves editable 3D geometry more reliably?
SLW210 replied to indiancad's topic in AutoCAD 3D Modelling & Rendering
Why would that be interesting? STEP is very common and maintains information and accuracy. So if unknown usage why wouldn't that be the choice? I usually work with AutoCAD, so ACIS or .dwg is my first choice, then STEP if I need information retained for other programs, for 3D Printing simple objects, I sometimes will just do the .stl export. My 3D Printer slicing software can handle STEP files, I have yet to test some more intricate models, but, it eventually creates .stl and then a .3mf g-code file for the printing. It's very tedious painting multicolor parts in the slicer software, so I'll need to see how pre-coloring in AutoCAD>STEP works and which is better. That's just in reference to what AutoCAD can do (Mechanical for STEP), there are other options for different programs. -
Praveen joined the community
-
LM_B joined the community
-
Xref hatches plot solid black and fonts change on my machine only
xurshid_viewport replied to xurshid_viewport's topic in AutoCAD Beginners' Area
Thanks, SLW210. The plot preview shows the same thing as the PDF: the hatches are black there too, so it is not something that only happens at the plotter. On paper I haven't tried yet, I only printed to PDF. I'll check what XREFOVERRIDE and VISRETAIN are set to in my file tomorrow at the bureau and report back. I also want to see whether the hatch layer in his drawing has a plot style assigned that doesn't exist in my CTB. I'll read through the page you linked in the meantime. -
allen24 joined the community
-
Beyond APPLOAD: A local script manager for those of us with too many LISPs
Paul Li replied to VicoWang's topic in AutoLISP, Visual LISP & DCL
@BIGAL I think using powershell method would be similar. User launches AutoCAD then runs lisp that would write the registry key (that designates the current profile) into powershell script along with item to add to Startup. But after running the powershell script, user is prompted to exit AutoCAD (without launching Appload) in order for the added item in the registry to be read on the relaunch of AutoCAD. -
Beyond APPLOAD: A local script manager for those of us with too many LISPs
BIGAL replied to VicoWang's topic in AutoLISP, Visual LISP & DCL
Maybe like this and use a bat file that last line calls Autocad or Bricscad after editing the registry, note adding extra programs see second image. -
VedaCAD - Technical Support, Updates & Community VCIDs
VicoWang replied to VicoWang's topic in AutoLISP, Visual LISP & DCL
For CAD manager, Developer, and Users accustomed to communicating via email, feel free to contact me anytime: vico@vedacad.com -
I continue to monitor the situation and although we're still seeing the error message, the stats for this month indicate that bot activity is going down from a peak in September. Fingers crossed it continues to fall.
-
lrm started following ucs and drawing problem
-
@LIU very simple. If UCSICON is set to OR (origin) and 0,0,0 of the current UCS is near to the left border of the graphics window boundary, or below the boundary, or not within the viewing window then the UCS ICON will move to be near the bottom left of the window and will not be postioned at 0,0. Note, the little square that you see on the icon indicates that you the WCS is active.
-
indiancad started following SLW210
-
indiancad started following ReMark
-
STEP vs SAT: Which one preserves editable 3D geometry more reliably?
indiancad replied to indiancad's topic in AutoCAD 3D Modelling & Rendering
That's great ! Choosing the format based on the receiving application and the intended use seems like the most practical approach. I also find your point about using STEP when the end use is unknown interesting. -
I used to use AutoCAD's LIGHTS(Point & Distant), CAMERA, ACTION(SCENE) commands to setup visual renderings in AutoCAD. But starting with AutoCAD 2007 when the entire rendering engine was changed and the SCENE command was dropped and never replaced, what does everyone use now to replicate the SCENE command? Or does anyone setup scenes at all which used to offer the end user the option to assign different light sources to a particular view.
-
Using Arraypath function via scripting, duplicating lines are created in opposite direction of curve path
SLW210 replied to harshil's topic in AutoCAD LT
I can move the geometry a good bit away and it works fine. The original LISP works, the exact location seems an issue and something is messing up the direction. Are there other examples of where it fails? I added prompts for Layer, Path and number. AUTOHPA_SLW.lsp -
Danielm103 started following Python Slide(.SLD) to wxImage
-
Python Slide(.SLD) to wxImage In the next release (3.1.16), I added a function, image: wx.Image = Gs.Core.slideToWxImage(test_slide_path, width, height, [R, G, B]) for people that are used to using slides in their dialogs.
-
- 3
-
-
STEP vs SAT: Which one preserves editable 3D geometry more reliably?
SLW210 replied to indiancad's topic in AutoCAD 3D Modelling & Rendering
I do not recall having many issues with any of them. AutoCAD cannot export directly to STEP, only Mechanical (which is a FREE toolset though). Normally I determine the type by what is needed by the program that needs it, if any will work normally ACIS (.sat) would be preferred and if the program can I just keep it as a .dwg. For 3d Printing I use .stl and ultimately .3mf. If unknown what the end use will be, STEP is usually the best bet. -
STEP vs SAT: Which one preserves editable 3D geometry more reliably?
indiancad posted a topic in AutoCAD 3D Modelling & Rendering
When transferring a mechanical model between CAD applications, choosing an exchange format can affect more than just how the model looks. Face boundaries, analytic surfaces, and solid recognition can influence how easily the imported part can be modified. A model may import successfully but still require extra work before features can be edited or downstream operations can be performed reliably. I’m interested in practical experience rather than just format specifications. When exchanging 3D solids between different CAD systems, have you found STEP or SAT more reliable for preserving usable geometry? Does your choice change depending on the type of model? -
