The answer cannot be displayed. Can you please modify it?

The answer cannot be displayed. Can you please modify it?

raymondcheng0922
Enthusiast Enthusiast
468 Views
5 Replies
Message 1 of 6

The answer cannot be displayed. Can you please modify it?

raymondcheng0922
Enthusiast
Enthusiast

There are five sets of variable calculations below.

The first group minus the second group

The second group minus the third group

The fourth group minus the fifth group

Five sets of answers are written in mtext

 

 

 

 

 

(defun c:areax ()

  (setq varlst (mapcar 'getvar (list 'cmdecho 'nomutt)))

  (prompt "\nSelect Polylines for Set 1: ")

  (mapcar 'setvar (list 'cmdecho 'nomutt) (list 0 1))

  (setq ss1 (ssget '((0 . "LWPOLYLINE") (-4 . "<OR") (70 . 1) (70 . 129) (-4 . "OR>"))))

  (mapcar 'setvar (list 'cmdecho 'nomutt) (list 1 0))

  (prompt "\nSelect Polylines for Set 2: ")

  (mapcar 'setvar (list 'cmdecho 'nomutt) (list 0 1))

  (setq ss2 (ssget '((0 . "LWPOLYLINE") (-4 . "<OR") (70 . 1) (70 . 129) (-4 . "OR>"))))

  (mapcar 'setvar (list 'cmdecho 'nomutt) (list 1 0))

  (prompt "\nSelect Polylines for Set 3: ")

  (mapcar 'setvar (list 'cmdecho 'nomutt) (list 0 1))

  (setq ss3 (ssget '((0 . "LWPOLYLINE") (-4 . "<OR") (70 . 1) (70 . 129) (-4 . "OR>"))))

  (mapcar 'setvar (list 'cmdecho 'nomutt) (list 1 0))

  (prompt "\nSelect Polylines for Set 4: ")

  (mapcar 'setvar (list 'cmdecho 'nomutt) (list 0 1))

  (setq ss4 (ssget '((0 . "LWPOLYLINE") (-4 . "<OR") (70 . 1) (70 . 129) (-4 . "OR>"))))

  (mapcar 'setvar (list 'cmdecho 'nomutt) (list 1 0))

  (prompt "\nSelect Polylines for Set 5: ")

  (mapcar 'setvar (list 'cmdecho 'nomutt) (list 0 1))

  (setq ss5 (ssget '((0 . "LWPOLYLINE") (-4 . "<OR") (70 . 1) (70 . 129) (-4 . "OR>"))))

  (mapcar 'setvar (list 'cmdecho 'nomutt) (list 1 0))

  (prompt "\nSelect net area insertion point: ")

  (setq insertion-point (getpoint))

 

  (setq mtvalue1 "")

  (setq mtvalue2 "")

  (setq mtvalue3 "")

  (setq mtvalue4 "")

  (setq mtvalue5 "")

 

  (setq i 0)

  (repeat (sslength ss1)

    (setq mtvalue1 (strcat mtvalue1

                           (itoa (vla-get-objectID (vlax-ename->vla-object (ssname ss1 i))))

                           ">%).Area \\f \"%lu2\">%+%<\\AcObjProp Object(%<\\_ObjId ")

          i        (1+ i)))

 

  (setq i 0)

  (repeat (sslength ss2)

    (setq mtvalue2 (strcat mtvalue2

                           (itoa (vla-get-objectID (vlax-ename->vla-object (ssname ss2 i))))

                           ">%).Area \\f \"%lu2\">%-%<\\AcObjProp Object(%<\\_ObjId ")

          i        (1+ i)))

 

  (setq i 0)

  (repeat (sslength ss3)

    (setq mtvalue3 (strcat mtvalue3

                           (itoa (vla-get-objectID (vlax-ename->vla-object (ssname ss3 i))))

                           ">%).Area \\f \"%lu2\">%-%<\\AcObjProp Object(%<\\_ObjId ")

          i        (1+ i)))

 

  (setq i 0)

  (repeat (sslength ss4)

    (setq mtvalue4 (strcat mtvalue4

                           (itoa (vla-get-objectID (vlax-ename->vla-object (ssname ss4 i))))

                           ">%).Area \\f \"%lu2\">%-%<\\AcObjProp Object(%<\\_ObjId ")

          i        (1+ i)))

 

  (setq i 0)

  (repeat (sslength ss5)

    (setq mtvalue5 (strcat mtvalue5

                           (itoa (vla-get-objectID (vlax-ename->vla-object (ssname ss5 i))))

                           ">%).Area \\f \"%lu2\">%-%<\\AcObjProp Object(%<\\_ObjId ")

          i        (1+ i)))

 

  (mapcar 'setvar (list 'cmdecho 'nomutt) (list 1 0))

  (vla-addmtext (vla-get-modelspace (vla-get-activedocument (vlax-get-acad-object)))

    (vlax-3d-point insertion-point)

    0

    (strcat "%<\\AcExpr (%<\\AcObjProp Object(%<\\_ObjId "

            (vl-string-right-trim "+%<\\AcObjProp Object(%<\\_ObjId " mtvalue1)

            "%-%<\\AcObjProp Object(%<\\_ObjId "

            (vl-string-right-trim "-%<\\AcObjProp Object(%<\\_ObjId " mtvalue2)

            "%-%<\\AcObjProp Object(%<\\_ObjId "

            (vl-string-right-trim "-%<\\AcObjProp Object(%<\\_ObjId " mtvalue3)

            "%-%<\\AcObjProp Object(%<\\_ObjId "

            (vl-string-right-trim "-%<\\AcObjProp Object(%<\\_ObjId " mtvalue4)

            "%-%<\\AcObjProp Object(%<\\_ObjId " mtvalue5)

            "%) \\f \"%lu2\">%")

  (mapcar 'setvar (list 'cmdecho 'nomutt) varlst)

  (princ))

0 Likes
469 Views
5 Replies
Replies (5)
Message 2 of 6

paullimapa
Mentor
Mentor
Accepted solution

How’s about tackling this one set at a time first to make sure you at least get what you’re looking for after selecting the first set. What do you expect this to give you for mtvalue1:

(setq i 0)
  (repeat (sslength ss1)
    (setq mtvalue1 (strcat mtvalue1
                           (itoa (vla-get-objectID (vlax-ename->vla-object (ssname ss1 i))))
                           ">%).Area \\f \"%lu2\">%+%<\\AcObjProp Object(%<\\_ObjId ")
          i        (1+ i)))

 


Paul Li
IT Specialist
@The Office
Apps & Publications | Video Demos
0 Likes
Message 3 of 6

raymondcheng0922
Enthusiast
Enthusiast
Accepted solution

Drawing1 Model (1).jpg

 

0 Likes
Message 4 of 6

paullimapa
Mentor
Mentor
Accepted solution

the code below to properly get the field value for mtvalue1 is the format you should follow for the other selection sets:

(setq i 0 mtvalue1 "%<\\AcExpr (")
(repeat (setq len(sslength ss1))
 (setq mtvalue1 (strcat mtvalue1 "%<\\AcObjProp Object(%<\\_ObjId " (itoa(vla-get-objectID (vlax-ename->vla-object (ssname ss1 i)))) ">%).Area \\f \"%lu2\">%") i (1+ i))
 (if(/= i len) (setq mtvalue1 (strcat mtvalue1 " + "))(setq mtvalue1 (strcat mtvalue1 ") \\f \"%lu2\">%")))
)

 


Paul Li
IT Specialist
@The Office
Apps & Publications | Video Demos
0 Likes
Message 5 of 6

Kent1Cooper
Consultant
Consultant
Accepted solution

A little simplification you can make --

This construction, to find closed Polylines both with and without linetype generation enabled:

 

(setq ssx (ssget '((0 . "LWPOLYLINE") (-4 . "<OR") (70 . 1) (70 . 129) (-4 . "OR>"))))

 

can be replaced with this:

 

(setq ssx (ssget '((0 . "LWPOLYLINE") (-4 . "&") (70 . 1))))

 

The (-4 . "&") operates like (logand), recognizing any value in the (70) entry that contains the 1 bit indicating the Polyline is closed, whether or not the 128 bit about linetype generation is present.

Kent Cooper, AIA
0 Likes
Message 6 of 6

komondormrex
Mentor
Mentor
Accepted solution

check this. mtext row (1-2) (2-3)(4-5).

 

(defun c:5_sset_area (/ _nomutt _prompt list_1 list_2 list_3 list_4 list_5) 
	(setq _nomutt (setvar 'nomutt 0) _prompt (prompt "\nSelection set 1: ") _nomutt (setvar 'nomutt 1)
		  list_1 (mapcar 'vlax-ename->vla-object (vl-remove-if 'listp (mapcar 'cadr (ssnamex (ssget '((0 . "lwpolyline") (-4 . "&=") (70 . 1)))))))
		  _nomutt (setvar 'nomutt 0) _prompt (prompt "\nSelection set 2: ") _nomutt (setvar 'nomutt 1)
		  list_2 (mapcar 'vlax-ename->vla-object (vl-remove-if 'listp (mapcar 'cadr (ssnamex (ssget '((0 . "lwpolyline") (-4 . "&=") (70 . 1)))))))
		  _nomutt (setvar 'nomutt 0) _prompt (prompt "\nSelection set 3: ") _nomutt (setvar 'nomutt 1)
		  list_3 (mapcar 'vlax-ename->vla-object (vl-remove-if 'listp (mapcar 'cadr (ssnamex (ssget '((0 . "lwpolyline") (-4 . "&=") (70 . 1)))))))
		  _nomutt (setvar 'nomutt 0) _prompt (prompt "\nSselection set 4: ") _nomutt (setvar 'nomutt 1)
		  list_4 (mapcar 'vlax-ename->vla-object (vl-remove-if 'listp (mapcar 'cadr (ssnamex (ssget '((0 . "lwpolyline") (-4 . "&=") (70 . 1)))))))
		  _nomutt (setvar 'nomutt 0) _prompt (prompt "\nSelection set 5: ") _nomutt (setvar 'nomutt 1) 
		  list_5 (mapcar 'vlax-ename->vla-object (vl-remove-if 'listp (mapcar 'cadr (ssnamex (ssget '((0 . "lwpolyline") (-4 . "&=") (70 . 1)))))))
		  _nomutt (setvar 'nomutt 0) 
	)
	(vla-addmtext (vla-get-block (vla-get-activelayout (vla-get-activedocument (vlax-get-acad-object))))
				  (vlax-3d-point (getpoint "\nPick point for placing calculated mtext: "))
				  0
				  (strcat
				  	(strcat "%<\\AcExpr ("
				  			 (apply 'strcat (cdr (apply 'append (mapcar '(lambda (pline) (list "+" (strcat "%<\\acobjprop.16.2 object(%<\\_objid " (itoa (vla-get-objectid pline)) ">%).area>%"))) list_1))))
				  			 (apply 'strcat (apply 'append (mapcar '(lambda (pline) (list "-" (strcat "%<\\acobjprop.16.2 object(%<\\_objid " (itoa (vla-get-objectid pline)) ">%).area>%" ))) list_2)))
				  			 ") \\f \"%lu2\">%"
				  	) "\\P"
				  	(strcat "%<\\AcExpr ("
				  			 (apply 'strcat (cdr (apply 'append (mapcar '(lambda (pline) (list "+" (strcat "%<\\acobjprop.16.2 object(%<\\_objid " (itoa (vla-get-objectid pline)) ">%).area>%"))) list_2))))
				  			 (apply 'strcat (apply 'append (mapcar '(lambda (pline) (list "-" (strcat "%<\\acobjprop.16.2 object(%<\\_objid " (itoa (vla-get-objectid pline)) ">%).area>%" ))) list_3)))
				  			 ") \\f \"%lu2\">%"
				  	) "\\P"
				  	(strcat "%<\\AcExpr ("
				  			 (apply 'strcat (cdr (apply 'append (mapcar '(lambda (pline) (list "+" (strcat "%<\\acobjprop.16.2 object(%<\\_objid " (itoa (vla-get-objectid pline)) ">%).area>%"))) list_4))))
				  			 (apply 'strcat (apply 'append (mapcar '(lambda (pline) (list "-" (strcat "%<\\acobjprop.16.2 object(%<\\_objid " (itoa (vla-get-objectid pline)) ">%).area>%" ))) list_5)))
				  			 ") \\f \"%lu2\">%"
				  	)
				  )
	)
	(princ)
)

 

 

0 Likes