David D Posted May 18, 2011 Posted May 18, 2011 I am wondering if there is a snap setting I am unable to find that would show the "apparent center" (basicaly, the center of the mass if it was solid) of a square, rectangle, or any other odd shaped polyline. I see it in circles but not other shapes. Quote
BlackBox Posted May 18, 2011 Posted May 18, 2011 Try Mid Between Two Points (_m2p) for your osnap. For example: To snap to the center of a rectangle, start the line command and Shift + Right Click, pick 'Mid Between 2 Points', then select the lower left, and upper right corners of the rectangle. Quote
ReMark Posted May 18, 2011 Posted May 18, 2011 From draftsperson.net: With the creation of a REGION or a 3D SOLID, it is possible to find the centroid of an object, with the MASSPROP function. MASSPROP is an AutoCAD function. Quote
BlackBox Posted May 18, 2011 Posted May 18, 2011 From draftsperson.net: With the creation of a REGION or a 3D SOLID, it is possible to find the centroid of an object, with the MASSPROP function. MASSPROP is an AutoCAD function. @ Mark - That won't work for a Polyline entity... the OP used Solid as an example, as you can snap to the centroid of the Region/Solid, but the OP wants to avoid that step altogether (as I understand it). More information is needed. @ Davd - I am wondering if there is a snap setting I am unable to find that would show the "apparent center" ... of a square, rectangle, or any other odd shaped polyline. I see it in circles but not other shapes. How are you intending to 'show' the centroid? Do you mean using a line command, etc. you want to snap to the centroid of a given polyline, or do you want to pick a polyline, and mark the centroid by placing a point object, etc.? Quote
David D Posted May 18, 2011 Author Posted May 18, 2011 Renderman, I do not see the mp2 option. What I want it for is to position text that is middle center justified for aesthetic purposes. Shapes I am using are tool outlines, all sorts, sizes and shapes. I am working in 2d. Thank you Quote
ReMark Posted May 18, 2011 Posted May 18, 2011 The m2p or mtp option is a command modifier. You have to use AFTER starting the command you are working with like Move, or Line or Circle, etc. Quote
BlackBox Posted May 18, 2011 Posted May 18, 2011 Renderman, I do not see the mp2 option. What I want it for is to position text that is middle center justified for aesthetic purposes. Shapes I am using are tool outlines, all sorts, sizes and shapes. I am working in 2d.Thank you The m2p or mtp option is a command modifier. You have to use AFTER starting the command you are working with like Move, or Line or Circle, etc. Correct. You must manually (or programmatically) enter "_m2p" once you've bagan a command. Using your example, of moving text: Select the text, select the insertion grip (you listed Middle Center), then begin to move your mouse (you should see the text moving along), now at the keyboard type in "_m2p" (without the quotes) and hit Enter. You should now be prompted to select two points sequencially. Give it a try. :wink: Quote
David D Posted May 18, 2011 Author Posted May 18, 2011 Tried it. After typing _m2p and hit Enter I get this "Point or option keyword required." Quote
BlackBox Posted May 18, 2011 Posted May 18, 2011 Tried it. After typing _m2p and hit Enter I get this "Point or option keyword required." Works on my end (and has for years): Command: ** STRETCH ** Specify stretch point or [base point/Copy/Undo/eXit]: >>Enter new value for ORTHOMODE <1>: Resuming GRIP_STRETCH command. Specify stretch point or [base point/Copy/Undo/eXit]: [color=red]_M2P [/color][color=red]First point of mid: Second point of mid: [/color]Command: *Cancel* Quote
David D Posted May 18, 2011 Author Posted May 18, 2011 I worked with the sequence and got to work. Since I am doing this for many, many, many drawings I need to make a button with a macro (i think, new to this so may not have correct terminoligy) should I pursue this in this thread or start a new one. Quote
fuccaro Posted May 18, 2011 Posted May 18, 2011 I remember in Bricscad there is a snap point in the center of rectangles, triangles and other closed regular polylines. It is like the center of the circles. Quote
SLW210 Posted May 18, 2011 Posted May 18, 2011 I worked with the sequence and got to work. Since I am doing this for many, many, many drawings I need to make a button with a macro (i think, new to this so may not have correct terminoligy) should I pursue this in this thread or start a new one. It would be easier to follow if you just stayed in this thread, I can relocate and retitle the thread if you like. Quote
BlackBox Posted May 18, 2011 Posted May 18, 2011 (edited) I worked with the sequence and got to work. Since I am doing this for many, many, many drawings I need to make a button with a macro (i think, new to this so may not have correct terminoligy) should I pursue this in this thread or start a new one. Welcome to CADTutor, newbie! Here's a LISP freebie: (defun c:TPC () (c:Text2PlineCentroid)) (defun c:Text2PlineCentroid (/ *error* ssText flag eName oText ssPline oPline centroid oName) (princ "TEXT 2 POLYLINE CENTROID ") (vl-load-com) (defun *error* (msg) (and flag (not (redraw eName 4))) (cond ((not msg)) ; Normal exit ((member msg '("Function cancelled" "quit / exit abort"))) ; <esc> or (quit) ((princ (strcat "\n** Error: " msg " ** ")))) ; Fatal error, display it (princ)) (if (and (setq ssText (ssget ":S:E" '((0 . "MTEXT,TEXT")))) (and (setq flag T) (not (redraw (setq eName (ssname ssText 0)) 3))) (setq oText (vlax-ename->vla-object eName)) (setq ssPline (ssget ":S:E" '((0 . "*POLYLINE")))) (setq oPline (vlax-ename->vla-object (ssname ssPline 0)))) (progn (vla-getboundingbox oPline 'mn 'mx) (setq centroid (vlax-3d-point (mapcar '* (mapcar '+ (vlax-safearray->list mn) (vlax-safearray->list mx)) '(0.5 0.5 0.5)))) (vla-move oText (cond ((= "AcDbMText" (setq oName (vla-get-objectname oText))) (vla-get-insertionpoint oText)) ((= "AcDbText" oName) (vla-get-textalignmentpoint oText))) centroid)) (cond (ssText (prompt "\n** Nothing selected ** ")) ((prompt "\n** Nothing selected, or text layer is locked ** ")))) (princ)) Cheers! Edited May 18, 2011 by BlackBox Added condition for InsertionPoint / TextAlignmentPoint Quote
alanjt Posted May 18, 2011 Posted May 18, 2011 Go search theswamp for Gile's additional osnaps program. The centroid snap is beyond useful. Quote
David D Posted May 18, 2011 Author Posted May 18, 2011 Thanks Renderman but although it looks like Excel VBA which I am familiar with I have so far only heard of Lisp and do not even know whre or how to to put this code. That is why I was thinking a button, or does this go in the line where you would write a button macro? Quote
BlackBox Posted May 18, 2011 Posted May 18, 2011 Go search theswamp for Gile's additional osnaps program. The centroid snap is beyond useful. Awesome! Ehhhhehehehehehehee Quote
alanjt Posted May 18, 2011 Posted May 18, 2011 Thanks Renderman but although it looks like Excel VBA which I am familiar with I have so far only heard of Lisp and do not even know whre or how to to put this code. That is why I was thinking a button, or does this go in the line where you would write a button macro? http://www.cadtutor.net/forum/showthread.php?1390-How-to-use-the-LISP-routines-in-this-archive Quote
BlackBox Posted May 18, 2011 Posted May 18, 2011 Thanks Renderman but although it looks like Excel VBA which I am familiar with I have so far only heard of Lisp and do not even know whre or how to to put this code. That is why I was thinking a button, or does this go in the line where you would write a button macro? *cough*I'd check out Alan's suggestion*cough* To execute the code I posted from a toolbar button macro: Save the code I posted to a file ("Text2Centroid.LSP"?) to a location which resides within your Support File Search Paths. Sample macro (from memory): ^C^C(if (not c:TPC) (load "Text2Centroid.lsp"));TPC; Quote
David D Posted May 18, 2011 Author Posted May 18, 2011 alanjt, thank you. I was able to load the lisp. Renderman, I was able to create the button I wanted so I do not really need the lisp. I tried the lisp but I think I will need step by step instructions on how to make it work. I can select the text and see the snap points for the polyline but when I click on the first one to choose it the text goes there right away without the opportunity to choose the second point. If I want to know more about lisp's and how they work it would be helpfull to know why it is not working. Your choice to continue or not. Thank you very much to all who helped. Great forum! Quote
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.