This may help to place an entitiy wich looks like to be isometric...
In this special case it is a block wich will be placed in 3D-space, but should be easy to modifiy for any kind of object...
;;;===============================================================================================
;;; ___...:::{INSERT BlockReference 3P}:::...___
;;;
;;; Creates a BlockReference from three 3D-Points
;;;
;;;
;;; ****
;;; Author: Reltro
;;; Version: 1.0
;;; Released: 29.06.2013
;;; ****
;;;
;;; Input:
;;; - BlockName [STR] ... Name of the BlockDefinition
;;; - InsPt [LST] ... 3D-Point (WCS)
;;; - xDir [LST] ... 3D-Point (WCS) - matches the positiv xDir of the BlockDefinition
;;; - xyPlane [LST] ... 3D-Point (WCS) - matches the positiv-positiv xyPlane of the BlockDefinition
;;;
;;; - xScale [REAL] ... ScaleFactor in xDirection
;;; - yScale [REAL] ... ScaleFactor in yDirection
;;; - zScale [REAL] ... ScaleFactor in zDirection
;;; - zRot [REAL] ... Rotation around the zAxis (radians)
;;;
;;; Return:
;;; - BlockReference [VLA-Object]
;;;
;;;===============================================================================================
(defun InsBlockRef3P
(BlockName InsPt xDir xyPlane xScale yScale zScale zRot
/ TransformationMatrix
)
(setq TransformationMatrix
(lambda (P1 P2 P3
/ AAA tMatrix Rotation mxm
) ;;;-------------------------------------------------------------------------------------------
;;; ___...:::{Abritrary Axis Algorithm}:::...___
;;;
;;; http://www.autodesk.com/techpubs/autocad/acadr14/dxf/arbitrary_axis_algorithm_al_u05_c.htm
(lambda (P1 P2 P3
/ cross Ax Ay Az
) )
'((1 2) (2 0) (0 1))
)
)
)
)
(cross '(0 1 0) Az)
(cross '(0 0 1) Az)
)
Ay (cross Az Ax)
)
)
)
;;;-------------------------------------------------------------------------------------------
;;;-------------------------------------------------------------------------------------------
Rotation
(lambda (V ang
/ m
+m mxs vxs
) ;;; >>>>>>>>>
;;; Lee Mac
)
(m+m
)
(m+m
(mxs
)
)
)
)
;;; <<<<<<<<<
)
)
;;;-------------------------------------------------------------------------------------------
(setq tMatrix
(AAA P1 P2 P3
))
(Rotation
(angle (mxm tMatrix P1
) (mxm tMatrix P2
)) )
P1
)
)
)
)
BlockName
XScale
YScale
ZScale
zRot
)
)
)
Edit : code=cadlisp-7