Jump to content

Proxy Objects


wimal

Recommended Posts

I could figure out only this (semi-automatic with bounding box comparsion):


[b][color=BLACK]([/color][/b]defun C:test [b][color=FUCHSIA]([/color][/b] / s sl d cen bp SS i e lst plst osm [b][color=FUCHSIA])[/color][/b]

[b][color=FUCHSIA]([/color][/b]setvar 'errno 0[b][color=FUCHSIA])[/color][/b] [b][color=FUCHSIA]([/color][/b]redraw[b][color=FUCHSIA])[/color][/b]
[b][color=FUCHSIA]([/color][/b]while [b][color=NAVY]([/color][/b]/= 52 [b][color=MAROON]([/color][/b]getvar 'errno[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]
	[b][color=NAVY]([/color][/b]princ [color=#2f4f4f]"\nSelect source proxy entity for reference <exit>: "[/color][b][color=NAVY])[/color][/b]
	[b][color=NAVY]([/color][/b]setq s [b][color=MAROON]([/color][/b]ssget [color=#2f4f4f]"_+.:E:S"[/color] '[b][color=GREEN]([/color][/b][b][color=BLUE]([/color][/b]0 . [color=#2f4f4f]"ACAD_PROXY_ENTITY"[/color][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]
	[b][color=NAVY]([/color][/b]cond
		[b][color=MAROON]([/color][/b][b][color=GREEN]([/color][/b]= 7 [b][color=BLUE]([/color][/b]getvar 'errno[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b] [b][color=GREEN]([/color][/b]princ [color=#2f4f4f]"\nMissed, try again."[/color][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
		[b][color=MAROON]([/color][/b][b][color=GREEN]([/color][/b]= 'PICKSET [b][color=BLUE]([/color][/b]type s[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b] 
			[b][color=GREEN]([/color][/b]setq s [b][color=BLUE]([/color][/b]ssname s 0[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b]
			[b][color=GREEN]([/color][/b]vla-GetBoundingBox [b][color=BLUE]([/color][/b]vlax-ename->vla-object s[b][color=BLUE])[/color][/b] 'll 'ur[b][color=GREEN])[/color][/b]
			[b][color=GREEN]([/color][/b]setq sl [b][color=BLUE]([/color][/b]mapcar 'vlax-safearray->list [b][color=RED]([/color][/b]list ll ur[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b]
			[b][color=GREEN]([/color][/b]setq d [b][color=BLUE]([/color][/b]apply 'distance sl[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b]
			[b][color=GREEN]([/color][/b]setq cen [b][color=BLUE]([/color][/b]mapcar '[b][color=RED]([/color][/b]lambda [b][color=PURPLE]([/color][/b]a b[b][color=PURPLE])[/color][/b] [b][color=PURPLE]([/color][/b]/ [b][color=TEAL]([/color][/b]+ a b[b][color=TEAL])[/color][/b] 2.[b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b]car sl[b][color=RED])[/color][/b] [b][color=RED]([/color][/b]cadr sl[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b]
			[b][color=GREEN]([/color][/b]command [color=#2f4f4f]"_.EXPLODE"[/color] s[b][color=GREEN])[/color][/b] [color=#8b4513]; I don't want to explode it, only the proxy's basept to be snappable[/color]
			[b][color=GREEN]([/color][/b]if [b][color=BLUE]([/color][/b]setq bp [b][color=RED]([/color][/b]getpoint [color=#2f4f4f]"\nSpecify its base point for reference < exit >: "[/color] cen[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b]
				[b][color=BLUE]([/color][/b]progn [b][color=RED]([/color][/b]setq sl [b][color=PURPLE]([/color][/b]list d [b][color=TEAL]([/color][/b]angle cen bp[b][color=TEAL])[/color][/b] [b][color=TEAL]([/color][/b]distance cen bp[b][color=TEAL])[/color][/b][b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b]grdraw cen bp 1 1[b][color=RED])[/color][/b] [b][color=RED]([/color][/b]setq plst [b][color=PURPLE]([/color][/b]cons bp plst[b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b][b][color=BLUE])[/color][/b]
				[b][color=BLUE]([/color][/b]setq sl nil[b][color=BLUE])[/color][/b]
			[b][color=GREEN])[/color][/b]
			[b][color=GREEN]([/color][/b]setvar 'errno 52[b][color=GREEN])[/color][/b]
		[b][color=MAROON])[/color][/b]
		[b][color=MAROON]([/color][/b]T nil[b][color=MAROON])[/color][/b]
	[b][color=NAVY])[/color][/b][color=#8b4513]; cond[/color]
[b][color=FUCHSIA])[/color][/b][color=#8b4513]; while[/color]

[b][color=FUCHSIA]([/color][/b]if 
	[b][color=NAVY]([/color][/b]and sl 
		[color=#8b4513]; [b][color=MAROON]([/color][/b]princ [color=#2f4f4f]"\nSelect proxy objects: "[/color][b][color=MAROON])[/color][/b][/color]
		[b][color=MAROON]([/color][/b]setq SS [b][color=GREEN]([/color][/b]ssget [color=#2f4f4f]"_X"[/color] [b][color=BLUE]([/color][/b]list [b][color=RED]([/color][/b]cons 0 [color=#2f4f4f]"ACAD_PROXY_ENTITY"[/color][b][color=RED])[/color][/b][b][color=RED]([/color][/b]if [b][color=PURPLE]([/color][/b]= 1 [b][color=TEAL]([/color][/b]getvar 'cvport[b][color=TEAL])[/color][/b][b][color=PURPLE])[/color][/b] [b][color=PURPLE]([/color][/b]cons 410 [b][color=TEAL]([/color][/b]getvar 'ctab[b][color=TEAL])[/color][/b][b][color=PURPLE])[/color][/b] '[b][color=PURPLE]([/color][/b]410 . [color=#2f4f4f]"Model"[/color][b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
	[b][color=NAVY])[/color][/b]
	[b][color=NAVY]([/color][/b]progn
		[b][color=MAROON]([/color][/b]repeat [b][color=GREEN]([/color][/b]setq i [b][color=BLUE]([/color][/b]sslength SS[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b]
			[b][color=GREEN]([/color][/b]setq e [b][color=BLUE]([/color][/b]ssname SS [b][color=RED]([/color][/b]setq i [b][color=PURPLE]([/color][/b]1- i[b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b]
			[b][color=GREEN]([/color][/b]vla-GetBoundingBox [b][color=BLUE]([/color][/b]vlax-ename->vla-object e[b][color=BLUE])[/color][/b] 'll 'ur[b][color=GREEN])[/color][/b]
			[b][color=GREEN]([/color][/b]setq lst [b][color=BLUE]([/color][/b]mapcar 'vlax-safearray->list [b][color=RED]([/color][/b]list ll ur[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b]
			[b][color=GREEN]([/color][/b]if [b][color=BLUE]([/color][/b]equal [b][color=RED]([/color][/b]setq d [b][color=PURPLE]([/color][/b]apply 'distance lst[b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b]car sl[b][color=RED])[/color][/b] 1e-8[b][color=BLUE])[/color][/b]
				[b][color=BLUE]([/color][/b]progn
					[b][color=RED]([/color][/b]setq cen [b][color=PURPLE]([/color][/b]mapcar '[b][color=TEAL]([/color][/b]lambda [b][color=OLIVE]([/color][/b]a b[b][color=OLIVE])[/color][/b] [b][color=OLIVE]([/color][/b]/ [b][color=GRAY]([/color][/b]+ a b[b][color=GRAY])[/color][/b] 2.[b][color=OLIVE])[/color][/b][b][color=TEAL])[/color][/b] [b][color=TEAL]([/color][/b]car lst[b][color=TEAL])[/color][/b] [b][color=TEAL]([/color][/b]cadr lst[b][color=TEAL])[/color][/b][b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b]
					[b][color=RED]([/color][/b]setq bp [b][color=PURPLE]([/color][/b]polar cen [b][color=TEAL]([/color][/b]cadr sl[b][color=TEAL])[/color][/b] [b][color=TEAL]([/color][/b]caddr sl[b][color=TEAL])[/color][/b][b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b]
					[b][color=RED]([/color][/b]setq plst [b][color=PURPLE]([/color][/b]cons bp plst[b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b]
				[b][color=BLUE])[/color][/b][color=#8b4513]; progn[/color]
			[b][color=GREEN])[/color][/b][color=#8b4513]; if[/color]
		[b][color=MAROON])[/color][/b][color=#8b4513]; repeat[/color]
		[b][color=MAROON]([/color][/b]setq osm [b][color=GREEN]([/color][/b]getvar 'osmode[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
		[b][color=MAROON]([/color][/b]setvar 'osmode 0[b][color=MAROON])[/color][/b]
		[b][color=MAROON]([/color][/b]setvar 'pdmode 35[b][color=MAROON])[/color][/b]
		[b][color=MAROON]([/color][/b]foreach x plst [b][color=GREEN]([/color][/b]entmakex [b][color=BLUE]([/color][/b]list [b][color=RED]([/color][/b]cons 0 [color=#2f4f4f]"POINT"[/color][b][color=RED])[/color][/b] [b][color=RED]([/color][/b]cons 62 1[b][color=RED])[/color][/b] [b][color=RED]([/color][/b]cons 10 x[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b] [color=#8b4513]; graphical check[/color]
		[b][color=MAROON]([/color][/b]princ [b][color=GREEN]([/color][/b]strcat [color=#2f4f4f]"\nProceeded "[/color] [b][color=BLUE]([/color][/b]itoa [b][color=RED]([/color][/b]length plst[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b] [color=#2f4f4f]" proxy objects with the same BoundingBox."[/color][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
		[b][color=MAROON]([/color][/b]setvar 'osmode osm[b][color=MAROON])[/color][/b]
	[b][color=NAVY])[/color][/b][color=#8b4513]; progn[/color]
[b][color=FUCHSIA])[/color][/b][color=#8b4513]; if[/color]
[b][color=FUCHSIA]([/color][/b]princ[b][color=FUCHSIA])[/color][/b]
[b][color=BLACK])[/color][/b][color=#8b4513];| defun |; [b][color=BLACK]([/color][/b]vl-load-com[b][color=BLACK])[/color][/b] [b][color=BLACK]([/color][/b]princ[b][color=BLACK])[/color][/b][/color]


And the selected source proxy is exploded (sorry).

Maybe someone else could "develop it" or figure out something better.

Link to comment
Share on other sites

Wimal The objects are

 

AECC_POINT Layer: "0"

Space: Model space

Handle = 472

Text Location : (321447.34, 9944110.55, 0.00)

Text Rotation :

Normal : (0.00, 0.00, 1.00)

Group Name :

Point Number : 372

Point Name :

Northing : 9944110.55

Easting : 321447.34

Elevation : 1468.81 XDRef:

Raw Description : NYCS0071 XDRef:

Full Description : NYCS0071

Marker Location : (321447.34, 9944110.55, 0.00)

 

As I have CIV3D its ok, what do you get if you use this please post, just copy and paste to command line.

 

(vlax-Dump-Object (vlax-Ename->Vla-Object (car (entsel))))

Link to comment
Share on other sites

After open it with civil 3D

When I select it , Hilihhting the the insertion point.

When I move it Automatically generating an Arrow Directing the insertion point..

But I cant get value of insertion point.

Somebodymust have a solution.

PROXY 3.PNG

Link to comment
Share on other sites

The code is below is slightly risky since, like Grrr's suggestion, the _Explode command is used:

(defun KGA_Sys_Entlast ( / enm tmp)
 (if (setq enm (entlast))
   (while (setq tmp (entnext enm))
     (setq enm tmp)
   )
 )
 enm
)

; (AeccDbPointInsPointGet (car (entsel)))
(defun AeccDbPointInsPointGet (enm / enmLast obj ptLst tmp)
 (setq enmLast (KGA_Sys_Entlast))
 (setvar 'cmdecho 0)
 (command "_.explode" enm)
 (while (setq tmp (entnext enmLast))
   (if (= "AcDbLine" (vla-get-objectname (setq obj (vlax-ename->vla-object tmp))))
     (setq ptLst (vl-list* (vlax-get obj 'startpoint) (vlax-get obj 'endpoint) ptLst))
   )
   (setq enmLast tmp)
 )
 (command "_.u")
 (setvar 'cmdecho 1)
 (if (= 4 (length ptLst)) (apply 'inters ptLst))
)

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