Xwodred Posted November 24, 2010 Share Posted November 24, 2010 instead area i get: Command: ppp area Specify first corner point or [Object/Add area/Subtract area] : 0,0 Specify next point or [Arc/Length/Undo]: Point or option keyword required. ; error: Function cancelled Specify next point or [Arc/Length/Undo]: *Cancel* Could anyone help me cos i'm new in all this lisp thing. (DEFUN C:PPP () (command "area" "0,0" "") (COMMAND "AREA" "E" PAUSE) (COMMAND) (setq di (getvar "dimzin")) (setvar "dimzin" 0) (setq uprec 2) (SETQ R (GETVAR "AREA")) (SETQ P (/ R 10000)) (SETQ P (RTOS P uprec)) (SETQ P (DISTOF P 2)) (IF (EQ R 0) (SETQ P1 "nic") (SETQ P1 (RTOS P 2 2))) (COMMAND "ATTEDIT" "Y" "*" "*" "*" PAUSE "" "V" "R" P1 "") (setvar "dimzin" di)) Quote Link to comment Share on other sites More sharing options...
pBe Posted November 24, 2010 Share Posted November 24, 2010 (edited) There are more efficient way of achieving this.. but we'll start with your code (setq di (getvar "dimzin")) Whats the point of retrieving this when your'e not dealing dimensions anyway? The RTOS function will take care of whatever your intention as the end result ((SETQ R (GETVAR "AREA")) (SETQ P (/ R 10000)) (SETQ P (RTOS P uprec)) (SETQ P (DISTOF P 2)) You can do thi with 1 go using... (setq p (distof (rtos (/ (getvar "area") 10000) 2 ))) But then again you need variable R for your line here for this... (IF (EQ R 0) (SETQ P1 "nic") (SETQ P1 (RTOS P 2 2))) is this the part where you check if no area data for selected object? (r varaible) or something to do with units? Your code works fine when i tested it. Edited November 24, 2010 by pBe Quote Link to comment Share on other sites More sharing options...
Xwodred Posted November 24, 2010 Author Share Posted November 24, 2010 this is the part where i check if no area data for selected object.. So you say it works.. weird cos i've got ACAD 2011 and it dosn't.. But on 2009 it was fine... I'm using full version of 2011 of course... As i said before i'm totally new with this, and don't know much obout lisp. I can't check it on 2009 now. On what version of ACAD did you tried it? Quote Link to comment Share on other sites More sharing options...
pBe Posted November 24, 2010 Share Posted November 24, 2010 we can continue with this path or try something like this (defun c:test (/ Pline_Hatch object_area attrib_text) (vl-load-com) (cond ((setq Pline_Hatch (ssget "_:S" '((0 . "LWPOLYLINE,HATCH")))) (setq object_area (vla-get-area (vlax-ename->vla-object (ssname Pline_Hatch 0)))) (setq attrib_text (nentsel)) (vla-put-textstring (vlax-ename->vla-object (car attrib_text)) object_area) ) ) ) Now for the decimal point You can play with LUPREC system variable or change this (setq object_area (rtos (vla-get-area (vlax-ename->vla-object (ssname Pline_Hatch 0))) 2 2)) depending on the units your working on Engineering... Architectural.. decimal.... Good luck Quote Link to comment Share on other sites More sharing options...
Xwodred Posted November 24, 2010 Author Share Posted November 24, 2010 thank you! oh i see i suck at this.. So i added (SETQ object_areab (/ object_area 10000)) and i'm getting now area in m2 as i wanted to. but i don't know how to make it shorter, i mean to leave just two positions after comma.. it's probably nothing hard but for me it's still black magic.. Quote Link to comment Share on other sites More sharing options...
Lee Mac Posted November 24, 2010 Share Posted November 24, 2010 Have you considered using Fields? Some food for thought perhaps: [i][color=#990099];;------------------=={ Areas 2 Attribute }==-----------------;;[/color][/i] [i][color=#990099];; ;;[/color][/i] [i][color=#990099];; Populates a selected attribute with a Field referencing ;;[/color][/i] [i][color=#990099];; the sum of the areas of selected objects. ;;[/color][/i] [i][color=#990099];;------------------------------------------------------------;;[/color][/i] [i][color=#990099];; Author: Lee Mac, Copyright © 2010 - www.lee-mac.com ;;[/color][/i] [i][color=#990099];;------------------------------------------------------------;;[/color][/i] [b][color=RED]([/color][/b][b][color=BLUE]defun[/color][/b] c:A2A [b][color=BLUE]nil[/color][/b] [b][color=RED]([/color][/b]c:Areas2Attribute[b][color=RED]))[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]defun[/color][/b] c:Areas2Attribute [b][color=RED]([/color][/b] [b][color=BLUE]/[/color][/b] *error* _StartUndo _EndUndo doc att ss [b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vl-load-com[/color][/b][b][color=RED])[/color][/b] [i][color=#990099];; © Lee Mac 2010[/color][/i] [b][color=RED]([/color][/b][b][color=BLUE]defun[/color][/b] *error* [b][color=RED]([/color][/b] msg [b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]if[/color][/b] doc [b][color=RED]([/color][/b]_EndUndo doc[b][color=RED]))[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]or[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]wcmatch[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]strcase[/color][/b] msg[b][color=RED])[/color][/b] [b][color=#a52a2a]"*BREAK,*CANCEL*,*EXIT*"[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]princ[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]strcat[/color][/b] [b][color=#a52a2a]"\n** Error: "[/color][/b] msg [b][color=#a52a2a]" **"[/color][/b][b][color=RED])))[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]princ[/color][/b][b][color=RED])[/color][/b] [b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]defun[/color][/b] _StartUndo [b][color=RED]([/color][/b] doc [b][color=RED])[/color][/b] [b][color=RED]([/color][/b]_EndUndo doc[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vla-StartUndoMark[/color][/b] doc[b][color=RED])[/color][/b] [b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]defun[/color][/b] _EndUndo [b][color=RED]([/color][/b] doc [b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]if[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]=[/color][/b] [b][color=#009900]8[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]logand[/color][/b] [b][color=#009900]8[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]getvar[/color][/b] [b][color=DARKRED]'[/color][/b]UNDOCTL[b][color=RED])))[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vla-EndUndoMark[/color][/b] doc[b][color=RED])[/color][/b] [b][color=RED])[/color][/b] [b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] doc [b][color=RED]([/color][/b][b][color=BLUE]vla-get-ActiveDocument[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vlax-get-acad-object[/color][/b][b][color=RED])))[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]if[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]and[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]ssget[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=RED](([/color][/b][b][color=#009900]0[/color][/b] [b][color=DARKRED].[/color][/b] [b][color=#a52a2a]"ARC,CIRCLE,ELLIPSE,HATCH,LWPOLYLINE,REGION,SPLINE"[/color][/b][b][color=RED])))[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] att [b][color=RED]([/color][/b]LM:Selectif [b][color=RED]([/color][/b][b][color=BLUE]lambda[/color][/b] [b][color=RED]([/color][/b] x [b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]eq[/color][/b] [b][color=#a52a2a]"ATTRIB"[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]cdr[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]assoc[/color][/b] [b][color=#009900]0[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]entget[/color][/b] x[b][color=RED])))))[/color][/b] [b][color=BLUE]nentsel[/color][/b] [b][color=#a52a2a]"\nSelect Attribute: "[/color][/b] [b][color=RED])[/color][/b] [b][color=RED])[/color][/b] [b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]progn[/color][/b] [b][color=RED]([/color][/b]_StartUndo doc[b][color=RED])[/color][/b] [b][color=RED]([/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]lambda[/color][/b] [b][color=RED]([/color][/b] ss fld [b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vlax-for[/color][/b] obj ss [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] fld [b][color=RED]([/color][/b][b][color=BLUE]strcat[/color][/b] fld [b][color=#a52a2a]"%<\\AcObjProp Object(%<\\_ObjId "[/color][/b] [b][color=RED]([/color][/b]LM:GetObjectID doc obj[b][color=RED])[/color][/b] [b][color=#a52a2a]">%).Area>% + "[/color][/b] [b][color=RED])[/color][/b] [b][color=RED])[/color][/b] [b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vla-put-TextString[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vlax-ename->vla-object[/color][/b] att[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] fld [b][color=RED]([/color][/b][b][color=BLUE]strcat[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]substr[/color][/b] fld [b][color=#009900]1[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]-[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]strlen[/color][/b] fld[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]if[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]<[/color][/b] [b][color=#009900]1[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vla-get-Count[/color][/b] ss[b][color=RED]))[/color][/b] [b][color=#009900]3[/color][/b] [b][color=#009900]5[/color][/b][b][color=RED]))[/color][/b] [b][color=RED])[/color][/b] [b][color=#a52a2a]" \\f \"%lu6%qf1\">%"[/color][/b] [b][color=RED])[/color][/b] [b][color=RED])[/color][/b] [b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vla-delete[/color][/b] ss[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vla-regen[/color][/b] doc [b][color=BLUE]acActiveViewport[/color][/b][b][color=RED])[/color][/b] [b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] ss [b][color=RED]([/color][/b][b][color=BLUE]vla-get-ActiveSelectionSet[/color][/b] doc[b][color=RED]))[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]if[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]<[/color][/b] [b][color=#009900]1[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vla-get-Count[/color][/b] ss[b][color=RED]))[/color][/b] [b][color=#a52a2a]"%<\\AcExpr "[/color][/b] [b][color=#a52a2a]""[/color][/b][b][color=RED])[/color][/b] [b][color=RED])[/color][/b] [b][color=RED]([/color][/b]_EndUndo doc[b][color=RED])[/color][/b] [b][color=RED])[/color][/b] [b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]princ[/color][/b][b][color=RED])[/color][/b] [b][color=RED])[/color][/b] [i][color=#990099];;---------------------=={ Select if }==----------------------;;[/color][/i] [i][color=#990099];; ;;[/color][/i] [i][color=#990099];; Continuous selection prompts until the predicate function ;;[/color][/i] [i][color=#990099];; foo is validated ;;[/color][/i] [i][color=#990099];;------------------------------------------------------------;;[/color][/i] [i][color=#990099];; Author: Lee Mac, Copyright © 2010 - www.lee-mac.com ;;[/color][/i] [i][color=#990099];;------------------------------------------------------------;;[/color][/i] [i][color=#990099];; Arguments: ;;[/color][/i] [i][color=#990099];; foo - optional predicate function taking ename argument ;;[/color][/i] [i][color=#990099];; fun - selection function to invoke ;;[/color][/i] [i][color=#990099];; str - prompt string ;;[/color][/i] [i][color=#990099];;------------------------------------------------------------;;[/color][/i] [i][color=#990099];; Returns: selected entity ename if successful, else nil ;;[/color][/i] [i][color=#990099];;------------------------------------------------------------;;[/color][/i] [b][color=RED]([/color][/b][b][color=BLUE]defun[/color][/b] LM:Selectif [b][color=RED]([/color][/b] foo fun str [b][color=BLUE]/[/color][/b] e [b][color=RED])[/color][/b] [i][color=#990099];; © Lee Mac 2010[/color][/i] [b][color=RED]([/color][/b][b][color=BLUE]while[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]progn[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] e [b][color=RED]([/color][/b][b][color=BLUE]car[/color][/b] [b][color=RED]([/color][/b]fun str[b][color=RED])))[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]cond[/color][/b] [b][color=RED]([/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]eq[/color][/b] [b][color=DARKRED]'[/color][/b]ENAME [b][color=RED]([/color][/b][b][color=BLUE]type[/color][/b] e[b][color=RED]))[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]if[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]and[/color][/b] foo [b][color=RED]([/color][/b][b][color=BLUE]not[/color][/b] [b][color=RED]([/color][/b]foo e[b][color=RED])))[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]princ[/color][/b] [b][color=#a52a2a]"\n** Invalid Object Selected **"[/color][/b][b][color=RED])[/color][/b] [b][color=RED])[/color][/b] [b][color=RED])[/color][/b] [b][color=RED])[/color][/b] [b][color=RED])[/color][/b] [b][color=RED])[/color][/b] e [b][color=RED])[/color][/b] [i][color=#990099];;-------------------=={ Get ObjectID }==---------------------;;[/color][/i] [i][color=#990099];; ;;[/color][/i] [i][color=#990099];; Returns the ObjectID string for the supplied VLA-Object ;;[/color][/i] [i][color=#990099];;------------------------------------------------------------;;[/color][/i] [i][color=#990099];; Author: Lee Mac, Copyright © 2010 - www.lee-mac.com ;;[/color][/i] [i][color=#990099];;------------------------------------------------------------;;[/color][/i] [i][color=#990099];; Arguments: ;;[/color][/i] [i][color=#990099];; doc - VLA Document Object (req'd for 64-bit systems) ;;[/color][/i] [i][color=#990099];; obj - VLA Object to query ;;[/color][/i] [i][color=#990099];;------------------------------------------------------------;;[/color][/i] [i][color=#990099];; Returns: ObjectID string for VLA-Object ;;[/color][/i] [i][color=#990099];;------------------------------------------------------------;;[/color][/i] [b][color=RED]([/color][/b][b][color=BLUE]defun[/color][/b] LM:GetObjectID [b][color=RED]([/color][/b] doc obj [b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]if[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]eq[/color][/b] [b][color=#a52a2a]"X64"[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]strcase[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]getenv[/color][/b] [b][color=#a52a2a]"PROCESSOR_ARCHITECTURE"[/color][/b][b][color=RED])))[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vlax-invoke-method[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vla-get-Utility[/color][/b] doc[b][color=RED])[/color][/b] [b][color=DARKRED]'[/color][/b]GetObjectIdString obj [b][color=BLUE]:vlax-false[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]itoa[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vla-get-Objectid[/color][/b] obj[b][color=RED]))[/color][/b] [b][color=RED])[/color][/b] [b][color=RED])[/color][/b] Quote Link to comment Share on other sites More sharing options...
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.