Jump to content

It should write area to atribute


Xwodred

Recommended Posts

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))

Link to comment
Share on other sites

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 by pBe
Link to comment
Share on other sites

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?

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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..

Link to comment
Share on other sites

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]

Link to comment
Share on other sites

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.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...