Leaderboard
Popular Content
Showing content with the highest reputation since 09/23/2026 in Posts
-
I use this in visual studio to toggle between header and source. also since I'm a southpaw, I use home and end for copy paste autohotkey is the GOAT! #z::Run www.autohotkey.com ;ALT + XX ; home::send ^c ; end::send ^v ; #IfWinActive ahk_exe devenv.exe ;PgUp::SendRaw `,DS.ARGS() ;misc command ;PgDn::SendRaw `,DS.ARGS({"val:type"}) ;misc command Insert::send ^k^o ;toggle header/source Delete::send ^a^k^f{Esc} ;select all and format #IfWinActive3 points
-
You can give this a try: (defun filePicker (directory filename extension / appHandle des pickedFile pickedFiles shell tmp tmpopen tmpoutput line) ;; Multi-file FilePicker using PowerShell OpenFileDialog ;; Returns a list of selected full file paths. ;; Returns nil if Cancel is pressed. (cond ;; Create temporary .BAT file ((and (setq tmp (vl-filename-mktemp nil nil ".bat")) (setq des (open tmp "w")) (write-line (strcat "<# : chooser.bat\n" ":: launches a File... Open sort of file chooser\n" "@echo off\n" "setlocal\n" "for /f \"delims=\" %%I in ('powershell -noprofile \"iex (${%~f0} | out-string)\"') do (\n" " echo %%~I\n" ")\n" "goto :EOF\n" ": end Batch portion / begin PowerShell hybrid chimera #>\n" "Add-Type -AssemblyName System.Windows.Forms\n" "$f = New-Object System.Windows.Forms.OpenFileDialog\n" "$f.InitialDirectory = \"" directory "\"\n" "$f.FileName = \"" filename "\"\n" "$f.Filter = \"" (cond ((= "dwg" (strcase extension t)) "AutoCAD Drawing (*.dwg)|*.dwg") ((= "dxf" (strcase extension t)) "AutoCAD DXF (*.dxf)|*.dxf") (t "All Files (*.*)|*.*") ) "\"\n" "$f.FilterIndex = 1\n" "$f.DefaultExt = \"" extension "\"\n" "$f.Multiselect = $true\n" "$f.ShowHelp = $true\n" "if ($f.ShowDialog() -eq [System.Windows.Forms.DialogResult]::OK) {\n" " $f.FileNames | ForEach-Object { $_ }\n" "}" ) des ) ) (not (close des)) (setq tmpoutput (vl-filename-mktemp nil nil ".txt")) (setq shell (vla-getinterfaceobject (vlax-get-acad-object) "WScript.shell")) (setq appHandle (vl-catch-all-apply 'vlax-invoke (list shell 'Run (strcat "cmd /c " tmp " > " tmpoutput) 0 :vlax-false))) (vlax-release-object shell) (not (vl-catch-all-error-p appHandle)) (setq tmpopen (open tmpoutput "r")) (while (setq line (read-line tmpopen)) (if (/= line "") (setq pickedFiles (append pickedFiles (list line)) ) ) ) (close tmpopen) (setq pickedFile pickedFiles) ) ((setq pickedFile (getfiled "" (strcat directory filename) extension 0)) (setq pickedFile (list pickedFile)) ) ) (if (and tmp (setq tmp (findfile tmp))) (vl-file-delete tmp) ) (if (and tmpoutput (setq tmpoutput (findfile tmpoutput))) (vl-file-delete tmpoutput) ) pickedFile )3 points
-
At a fishing weigh in a 3 shoe long fish was photographed, submitted and then disqualified as its accurate length could not be established. Often when looking at outside projects would pace a length as a guide. Then use real length for design.2 points
-
2 points
-
This is something I hate to do, but sometimes I'm in a hurry. One title block may be different in some fundamental way. I can't just explode it, because I'll lose all the information in the attributes. There's not enough time to create an entire block for one sheet, and why bother when there's only one? So it's time to Burst a move (sorry).2 points
-
That sounds like a fake Norton Pop-Up, ISeeYou, used to be (is?) an older vulnerability for web cams, I guy was activating webcams without the activation light on and blackmailing women with photos, he was caught and arrested a while back. I'll look for the article. Here is the Wiki iSeeYou - Wikipedia This looks to be a good while back.2 points
-
1 point
-
If you use notepad+ as an editor for Autolisp, the CTRL+ALT+b leaves a lot to be desired when it comes to selecting between brackets. The VLIDE double-click is much more satisfying. So here is an AutoHotKey script that gives you this functionnality while preserving the normal Dbl-Click of notepad+: #Requires AutoHotkey v2.0 #SingleInstance Off ; 1. Set up a unique communication highway (MsgNumber 0x401) OnMessage(0x401, ReceiveCloseSignal) ReceiveCloseSignal(wParam, lParam, msg, hwnd) { ExitApp } ; 2. Find any running old instance (ignoring itself) and send it the "Self-Destruct" signal DetectHiddenWindows True if (oldScriptHwnd := WinExist(A_ScriptFullPath " ahk_class AutoHotkey")) { if (oldScriptHwnd != A_ScriptHwnd) { ; Ensure the script doesn't close itself! PostMessage(0x401, 0, 0, , "ahk_id " oldScriptHwnd) WinWaitClose("ahk_id " oldScriptHwnd, , 2) } } ; 3. Automatically relaunch the script using UI Access to bypass UAC entirely if !A_IsCompiled && !InStr(A_AhkPath, "_UIA.exe") { uiaPath := RegExReplace(A_AhkPath, "\.exe$", "_UIA.exe") if FileExist(uiaPath) { try { Run('"' uiaPath '" "' A_ScriptFullPath '"') ExitApp } } } ; 4. Your Application-Specific Hotkeys #HotIf WinActive("ahk_class Notepad++") ~LButton:: { static lastClick := 0 currentClick := A_TickCount if (currentClick - lastClick < DllCall("GetDoubleClickTime")) { KeyWait("LButton") Sleep(60) SendEvent("^!b") lastClick := 0 } else { lastClick := currentClick } } #HotIf Link to download AutoHotKey https://www.autohotkey.com also available on Microsoft app store (Free) NppBrackets.ahk1 point
-
;;; DIMFL - Shorten the extension lines of selected dimensions. ;;; ;;; Applies a per-dimension override of DIMFXLON / DIMFXL, so the extension line ;;; starts at a fixed distance from the dimension line instead of at the ;;; definition point. Fixes the dimensions you pick, not the whole style. ;;; ;;; NO MEASUREMENT CHANGES. Definition points are not moved; only how far the ;;; extension line is DRAWN. A 50 stays a 50. ;;; Reversible with the Restore option. One Ctrl+Z undoes the whole pass. ;;; ;;; WARNING: if a dimension looks wrong because its definition point MOVED, this ;;; fixes the look but not the value, and makes the error harder to spot. Check ;;; the numbers before shortening anything. (vl-load-com) (defun R0:DFL-Get (obj prop / r) (setq r (vl-catch-all-apply 'vlax-get (list obj prop))) (if (vl-catch-all-error-p r) nil r)) (defun R0:DFL-Put (obj prop val / r) (setq r (vl-catch-all-apply 'vlax-put (list obj prop val))) (not (vl-catch-all-error-p r))) ;; (logand 4 nil) throws, so a missing layer record answers "not locked". (defun R0:DFL-Bloqueada (en / cap) (setq cap (tblsearch "LAYER" (cdr (assoc 8 (entget en))))) (and cap (= 4 (logand 4 (cdr (assoc 70 cap)))))) ;; Default length = whatever the first picked dimension already carries. Whoever ;; set up the style usually chose a number that suits the drawing scale. (defun R0:DFL-Sugerido (ss / i en obj v) (setq i 0 v nil) (while (and (< i (sslength ss)) (null v)) (setq en (ssname ss i) i (1+ i) obj (vlax-ename->vla-object en) v (R0:DFL-Get obj 'ExtLineFixedLen)) (if (or (not (numberp v)) (<= v 1e-9)) (setq v nil))) (if v v 2.5)) (defun c:DIMFL ( / *error* ss i en obj largo sug modo hechos fallo bloq und doc) (defun *error* (msg) (if und (vl-catch-all-apply 'vla-EndUndoMark (list doc))) (if (and msg (not (wcmatch (strcase msg) "*CANCEL*,*QUIT*,*BREAK*,*EXIT*,*ABORT*"))) (princ (strcat "\n[X] DIMFL: " msg))) (princ)) (princ "\nDIMFL | Shorten extension lines (no measurement is changed).") (princ "\n Select dimensions: ") (if (null (setq ss (ssget '((0 . "DIMENSION"))))) (princ "\n[!] DIMFL: nothing selected.") (progn (princ "\n Shorten = fixed length extension lines") (princ "\n Restore = back to starting at the definition point (LONG again)") (initget "Shorten Restore") (setq modo (getkword "\n [Shorten/Restore] <Shorten>: ")) (if (null modo) (setq modo "Shorten")) (if (= modo "Shorten") (progn (setq sug (R0:DFL-Sugerido ss)) (initget 6) (setq largo (getdist (strcat "\n Extension line length <" (rtos sug 2 3) ">: "))) (if (null largo) (setq largo sug)))) (setq doc (vla-get-ActiveDocument (vlax-get-acad-object)) und T) (vla-StartUndoMark doc) (setq i 0 hechos 0 fallo 0 bloq 0) (while (< i (sslength ss)) (setq en (ssname ss i) i (1+ i)) (if (R0:DFL-Bloqueada en) (setq bloq (1+ bloq)) (progn (setq obj (vlax-ename->vla-object en)) ;; ExtLineFixedLen = DIMFXL, ExtLineFixedLenSuppress = DIMFXLON. ;; Despite the "Suppress" name the value follows DIMFXLON: 0 = off ;; (long lines), -1 = on (fixed length). Length first, switch second. (if (= modo "Shorten") (if (and (R0:DFL-Put obj 'ExtLineFixedLen largo) (R0:DFL-Put obj 'ExtLineFixedLenSuppress -1)) (setq hechos (1+ hechos)) (setq fallo (1+ fallo))) (if (R0:DFL-Put obj 'ExtLineFixedLenSuppress 0) (setq hechos (1+ hechos)) (setq fallo (1+ fallo)))) (vl-catch-all-apply 'vla-Update (list obj))))) (vla-EndUndoMark doc) (setq und nil) (princ (strcat "\n\n[OK] DIMFL: " (itoa hechos) " dimension(s) " (if (= modo "Shorten") (strcat "with a " (rtos largo 2 3) " extension line") "restored: their lines are LONG again"))) (if (> bloq 0) (princ (strcat "\n " (itoa bloq) " on locked layers: skipped."))) (if (> fallo 0) (princ (strcat "\n " (itoa fallo) " did not accept the change."))) (if (= modo "Shorten") (princ "\n No measurement changed. To revert: DIMFL, Restore option.") (princ "\n To shorten them again: DIMFL, Shorten option.")))) (princ)) (princ "\n[DIMFL] loaded. Type DIMFL to shorten extension lines.") (princ)1 point
-
In the past lots of napkins, drawn on hands, cardboard (both drawn on and cut to some weird shape), no rubber gloves, but work gloves. Not for CAD, but, I have hade to build things to hammer handles, coworkers hand size, etc. when somehow nobody had a tape measure. And NO, I wasn't laughing, I am serious, AI has it's uses, but some things it will never get a grasp of IMO. Though I only have tried the free stuff, maybe paid for is better, I did like some of the images to video I did on TikTok and the special effects on some of the grandkids sports videos.1 point
-
Hard to compare without seeing the original. I have redone PDFs a good bit in the past, some go very quickly (vector and some raster) others are a mess from the start, different scales, fat lines, blurry lines and Text etc. What can AI do when you hand it a scribbled on wet napkin?1 point
-
Intriguing to use AI to draw it all for you - certainly could speed up things - I'd need to thoroughly check a few times to gain confidence in the process. My approach is slightly different generally. Recent PDFs done with CAD allow you to convert to lines, arc, and so on but the accuracy might be off. I'll scale the PDF, convert and then snap entities to a grid again - often 1.25 or 2.5mm - and that usually gets the right result... on a PDF that can be converted. A mix of both, yours and mine could get good results. Our biggest problem is historic records - scanned paper copies originally drawn in pen and ink - now that would be a good work out for AI !1 point
-
After installing the above bundle, everything works as expected. (To install these bundle, a free vedacad account is sufficient.) --- After nearly 40 emails of intense communication with @Paul Li, I saw the professionalism and rigor of the senior developer, and this real feedback after actual use has taken VedaCAD a big step forward. Thank you @Paul Li1 point
-
here's 2 for h&v alignment:..DIM.Fix.Y.Leaders.lsp ..DIM.Fix.X.Leaders.lsp1 point
-
1 point
-
As @VicoWang mentioned I've been running some major tests implementing this new VedaCAD system of deploying 3rd party add-ons in my case specifically to AutoCAD users. @VicoWang has been really response with all my feedback. I'm fairly impressed with how this provides a software developer like myself another platform to push out my apps to end users to implement on their AutoCAD system. The following is a list of my VCIDs. Along with AutoCAD users, I'm hoping AutoCAD LT 2024 and higher version users will also try installing and running these apps. Since currently the Autodesk App Store (now known as the Design & Make Marketplace) do not support AutoCAD LT, this VCID deployment method provides an excellent solution to have AutoLISP coded apps load & run on LT. [DDCalc] VCID: B-NN9XC DDCalc is an on screen graphical calculator within Autodesk® AutoCAD® that supports feet, inch & fractional numeric entries. [DDList] VCID: B-NLR04 DDList is Autodesk® AutoCAD® basic list command but on steroids. [DwgSetup] VCID: B-4K6UL DwgSetup App offers two user friendly graphic user interface commands to make drawing setup changes: (1) DDSetup and (2) DDDwgunits [VpScale App] VCID: B-31VQK VpScale Apps offers two very useful Viewport Scaling Applications: DDZmVpSc & DDSetVpSc [VTN] VCID: B-0Z8Q6 Virtual Tablet Navigator (VTN) is an add-on AutoLISP application using DCL to bring Autodesk® AutoCAD® physical Tablet Menu commands virtually onto the graphics screen. [XOM] VCID: B-09NQD Xref Object Manager (XOM) is an AutoLISP application using a dynamic dialog box to present built-in & added operations to manage External Reference Objects displayed both in a Tree and a List view.1 point
-
Never thought about that - I always still use ctrl+ V / C - means I have to let go of the mouse every now and then1 point
-
This is a port of BrxBlockMan to Python. should be a good sample of how to use a lot of the API, Palettes, Jigs, Cloning Etc. - select a drawing from the directory control - double click or drag a block from the List control to the current drawing - double click the main preview to insert the whole drawing - click the open folder button to add your favorite folder(s) - use the dropdown to navigate to a favorite folder - right click on a dwg to open it in Bricscad - right click on a folder to add it to favorites - right click on the dropdown ctrl to clear favorites https://github.com/CEXT-Dan/PyRx/tree/main/PySamples/wxPython/BlockMan Requires PyRx, BlockMan.py and BlockMan.xrc should be in the same folder1 point
-
If it doesn't kill us, it makes us stronger...and older! Growing old beats the hell out of the only other option.1 point
-
Yes, you are correct. The AI bots do not declare themselves like search engine bots do, they remain anonymous, so it's not possible to target only AI bots. Blocking all bots effectively destroys a site's SEO and search indexing. So my approach (at the moment) is to ride out the storm and see if it eases in the future.1 point
-
Hello friends, I have noticed the same intermittent errors. As some have suggested, this seems to be to do with AI bot activity which floods available resources, making it difficult to serve pages to real users. I am hoping this will subside over time, once all models have gorged themselves on our content. Right now we have two choices. We can either add a Capture test that means you need to complete an action before getting access to the forum (this basically filters out the bots) or we just put up with random errors for now. Let me know what you think.1 point
-
1 point
-
@Steven P not sure if this is what you mean, but I have pick attribute in say title block in a layout and it will copy that attribute value into the correct attribute in all blocks of that name, I think also a do multiple atts, handy when say you change a project description, updates all layouts etc.1 point
-
When it comes to keeping copies of various revisions completed, file naming and renaming could become really tricky especially if they're externally referenced to other dwgs. So to avoid having to repath dwgs that may be referenced elsewhere, what I've done in the past is to have the most current dwg always named the same and stored in the same location. A folder is created with the revision date as the name and the dwg is then copied into that folder. Now I have preserved copies of major milestone revisions saved in the project folder.1 point
-
@dexusThis is pretty good too. Thanks for contributing. Though it does not check the AutoCAD window location and so the file selection window may open up on a different monitor, it does open really fast and remembers the monitor location where it last closed. I also like the different looking gui. Interestingly enough, I was able to get it to show multiple file types (*.dwg & *.dxf) by placing that in the filename argument instead of the extension argument: (filePicker (getvar"dwgprefix") "*.dwg;*.dxf" "")1 point
-
No worries. I simply fed your description into Claude. With a few more prompts or a couple of revisions it would have done all that you asked. Its crazy powerful especially in the hands off someone like yourself with advanced lisp coding knowledge and experience. Claude and similar are such a high level above the likes of Co-Pilot.1 point
-
Agreed, the -DWGUNITS command is quite comprehensive, and particularly when receiving drawings from a non-team member. When I want to use it, I expand my commandline history to display 5 or 6 lines, in one go, all the better to display the numerous options.1 point
-
Likewise, we save a full copy of the as issued drawings, plus the PDF mark ups and check prints each in a separate folder. Unless specified otherwise all our files are suffixed with the revision code. Mark ups and check prints are in sequentially numbered and dated folders - so we can always go back. Typical folders: 1.0 Working Drawings 2.0 Check Prints - 2.1 Check Print 01-01-26 - 2.2 Check Print 15-03-26 3.0 Markups - 3.1 Markup 01-01-26 - 3.2 Markup 10 -03-26 4.0 Previous Versions And of course if there is a significant change between issues, I'll save the before and after away somewhere safe We usually issue PDFs during the project and if required the as-builts as dwgs right at the end I believe that the construction cloud saves each save as a new version whether it is a new revision or not1 point
-
Like others if a revision then a dwg was saved. We also saved a "AS Built" dwg, all our dwg's were recorded and could be looked up, we went back to 1999. They were saved as Tiffs later on as Pdf's. As we controlled the dwg's in regards to access by others, server locked, we made sure only the latest version was in the current working directory, we had a superseded directory. As part of document control a new project had specific directories premade.1 point
-
This is one of the knottiest issues in engineering work. What constitutes a full revision? When do you issue a partial revision, if you do at all? How do you track the changes? How do you roll them back if necessary? Worst of all, different shops use different criteria, and sometimes the same shop uses different criteria for different projects. It seems like common sense, since storage is so cheap these days, to save a new copy of the drawing for each revision, and append the revision number to the file name. That way the old revisions are still available if you need to refer to them or send them to someone. Even better, keep the revisions in a subfolder so they don't clutter up the main project folder. And this should go without saying--keep current backups! The current working file should have the project name (or whatever) with no revision number. Again, though, some shops will use different standards. For smaller projects, there's no need to keep old revisions, especially if you've sent them out all along. You can go back to those emails for attached copies of old drawings. As always, simpler is better. Make a plan and stick to it. Otherwise you're asking for trouble.1 point
