Jump to content

Recommended Posts

Posted

hello all :

Does anyone know if this is possible?

if you have a series of previously created dimensions , make a selection in a window and create a total dimension above them

image.thumb.png.95f1a5350ef5d8611172298199adba8c.png

any comments are welcome

 

Posted
34 minutes ago, rlx said:

maybe not exactly what you want but pretty close clickme

hanks, I had already seen it.

I found something that works for me and I'm trying to modify it

It serves to unite dimensions, that is, it creates one from two or more.

here code

;Shusei Hayashi
;OffshoreCad&Management Inc.
;10F Jaka Bldg., 6780 Ayala Ave.,
;Makati, Philippines
;http://www.offshorecad.com.ph/
;http://www.offshore-management.com.ph/
; Slightly modified to work with AutoCAD 2014 & 2015
; Greg Battin www.autocadtips.wordpress.com
; 

(defun c:JDIM( /  Flag ObjName1 ObjName2 Ang Ang2 Pt1 Pt2 Pt3 Pt4)
	(princ "\n convert two dimensions to total Dimension on the same position")
	(princ "\n **********************************")
	(setq *error* *myerror*)   
	(SD1028)
	(setq LegLen 7.0)
	(setq Flag nil)
	(get_layer&ltype&color)
	(RegistryRead_1001)
	(setvar "Clayer" Lay1)
	(setvar "Cecolor" Col1)
	(setvar "Celtype" LT1)
	(while (= Flag nil)
	   (setq ObjName1 (car (entsel "\n Select 1st Dimension :")))
		(if (and ObjName1(= (cdr (assoc 0 (setq Data1 (entget ObjName1)))) "DIMENSION"))
			(setq Flag T)
		)
	)
	(redraw ObjName1 3)
	(setq theStyle (SD3511 3 ObjName1))
	(setq Flag nil)
	(while (= Flag nil)
		(setq ObjName2 (car (entsel "\n Select 2nd Dimension :")))
		(if 	(and 	ObjName2 
				(= (cdr (assoc 0 (setq Data2 (entget ObjName2)))) "DIMENSION")
				(or	(equal (abs (- (cdr (assoc 50 Data1))(cdr (assoc 50 Data2)))) 0.0 0.0001)
					(equal (abs (- (cdr (assoc 50 Data1))(cdr (assoc 50 Data2)))) pi 0.0001)
				)
			)
			(setq Flag T)
				(princ "\n two dimensions should have same angle")
		)
	)
	(redraw ObjName1 4)
	
	;
	(setq PList (list (cdr (assoc 13 Data1))(cdr (assoc 14 Data1))(cdr (assoc 13 Data2))(cdr (assoc 14 Data2))))
	;
	(setq PList2 (list (cdr (assoc 10 Data1)) (cdr (assoc 10 Data2))))
	;
	(if (/= (distance (cdr (assoc 14 Data1))(cdr (assoc 10 Data1))) 0)
		(setq Ang (angle (cdr (assoc 14 Data1))(cdr (assoc 10 Data1))))
		(setq Ang (+ (angle (cdr (assoc 13 Data1))(cdr (assoc 14 Data1))) (* 0.5 pi)))
	)
	
	(setq Ang2 (+ Ang (* -0.5 pi)))
	;ƒŒƒCƒ„[
	(setq ItsLayer (cdr (assoc 8 Data1)))
	
	;
	(setq PList_n (mapcar '(lambda(x)(SD1862 x Ang2))PList))
	(setq PList2_n (mapcar '(lambda(x)(SD1862 x Ang2))PList2))
	;
	(setq PList_n_x (mapcar 'car PList_n))
	;
	(setq PList2_n_y (mapcar 'cadr PList2_n))
	
	;
	(setq Position1 (vl-position (apply 'min PList_n_x) PList_n_x))
	;
	(setq Position2 (vl-position (apply 'max PList_n_x) PList_n_x))
	;
	(setq Position3 (vl-position (apply 'max PList2_n_y) PList2_n_y))
	
	
	(setq Pt1 (nth Position1 PList))
;	(checkcircle Pt1 1.0 "A21")
	(setq Pt2 (nth Position2 PList))
;	(checkcircle Pt2 1.0 "A31")
	(setq Pt3 (nth Position3 PList2))
;	(checkcircle Pt3 1.0 "A51")
;	(setq Pt4 (polar Pt3 Ang (* LegLen Scale)))
;	(checkcircle Pt4 1.0 "A21")
	
	(setq 	Pt1 (trans Pt1 0 1)
			Pt2 (trans Pt2 0 1)
			Pt3 (trans Pt3 0 1)
;			Pt4 (trans Pt4 0 1)
	)
	(setq UAng (angle '(0 0) (getvar "UCSXDIR")))
	(setq Ang2 (- Ang2 UAng))
	(command "._dimstyle" "RE" theStyle)
	(command "dimrotated" (* 180 (/ Ang2 pi)) Pt1 Pt2 Pt3)
	(command "change" (entlast) "" "P" "LA" ItsLayer "")
	(entdel ObjName1)(entdel ObjName2)
 	
	(SD2056)
	(setq *error* nil)
	(princ)
)
;-----------------------------------------
(defun RegistryRead_1001()
	(setq Path1001 "HKEY_CURRENT_USER\\Software\\SpeedDraftLT\\SD_1001")
	(if (vl-registry-read Path1001 "LegLen" )
		(progn 	(set_tile "LegLen" (vl-registry-read Path1001 "LegLen"))
				(setq LegLen (atof (vl-registry-read Path1001 "LegLen")))
		)
		(setq LegLen 7.0)
	)
	(if (and (vl-registry-read Path1001 "Lay1" )(member (vl-registry-read Path1001 "Lay1") Laylist1))
		(progn 	(set_tile "Lay1" (itoa (vl-position (vl-registry-read Path1001 "Lay1") Laylist1)))
				(setq Lay1 (vl-registry-read Path1001 "Lay1"))
		)
		(progn 	(setq Lay1 (getvar "Clayer"))(set_tile "Lay1" (itoa (vl-position Lay1 Laylist1))))
	)
	(if (and (vl-registry-read Path1001 "LT1" )(member (vl-registry-read Path1001 "LT1") Laylist3))
		(progn 	(set_tile "LT1" (itoa (vl-position (vl-registry-read Path1001 "LT1") Laylist3)))
				(setq LT1 (vl-registry-read Path1001 "LT1"))
		)
		(progn 	(setq LT1 "ByLayer")(set_tile "LT1" "0"))
	)
	(if (and (vl-registry-read Path1001 "Col1" )(member (vl-registry-read Path1001 "Col1") Laylist2))
		(progn 	(set_tile "Col1" (itoa (vl-position (vl-registry-read Path1001 "Col1") Laylist2)))
				(setq Col1 (vl-registry-read Path1001 "Col1"))
		)
		(progn 	(setq Col1 "ByLayer")(set_tile "Col1" "0"))
	)
)
;----------------
(defun SD1028 ()
  (setq OldCmdEcho (getvar "CMDECHO"))
  (setvar "CMDECHO" 0)
  (command "undo" "be")
  (setq OldOsmode (getvar "OSMODE"))
  (setq OldLayer (getvar "CLAYER"))
  (setq OldLType (getvar "CeLType"))
  (setq OldCeLWeight (getvar "CeLWeight"))
  (setq OldColor (getvar "CeColor"))
  (setq OldOrtho (getvar "ORTHOMODE"))
  (setq OldDStyle  (getvar "DIMSTYLE"))
  (setq OldExpert (getvar "Expert"))
  (setvar "EXPERT" 0)
  (setq Path_Lang "HKEY_CURRENT_USER\\Software\\SpeedDraftLT")
;  (if (vl-registry-read Path_Lang "SD_Language" )
;  	(setq SD:Lang (vl-registry-read Path_Lang "SD_Language" ))
;  	(progn	(setq SD:Lang "J")
;  			(vl-registry-write Path_Lang "SD_Language" "J")
;  	)
;  )
  (princ)
)
;********************************
(defun SD2056 ()
  (setvar "OSMODE" OldOsmode)
  (command "undo" "end")
  (setvar "CLAYER" OldLayer)
  (setvar "CeLType" OldLType)
  (setvar "CeLWeight" OldCeLWeight)
  (setvar "CeColor" OldColor)
  (setvar "ORTHOMODE" OldOrtho)
  (setvar "Expert" OldExpert)
  (if (and (/= (getvar "DIMSTYLE") OldDStyle)(tblsearch "DIMSTYLE" OldDStyle))
  	(command "-dimstyle" "Restore" OldDStyle)
  )
  (princ "\n (C)OffshoreCad&Management")
  (setvar "CMDECHO" OldCmdEcho)
  (princ)
)

;********************************
(defun get_layer&ltype&color()
	(setq 	Lay (tblnext "LAYER" T)
			LT (tblnext "LTYPE" T)
			Laylist1 (list)
			Laylist2 (list "ByLayer" "Red" "Yellow" "Green" "Cyan" "Blue" "Magenta" "B/W")
			Laylist3 (list"ByLayer")
	)
	(While Lay
		(setq lay1 (list (cdr (assoc 2 Lay)))
			  lay2 (cdr (assoc 62 Lay))
			  lay3 (list (cdr (assoc 6 Lay)))
			  Laylist1 (append Laylist1 lay1)
			  Laylist3 (append Laylist3 lay3)
			  Lay (tblnext "LAYER")
		 )
	  	(if (> lay2 7)(setq  lay2 (list (itoa lay2)) Laylist2 (append Laylist2 lay2)))
	)
	(While LT
		(setq lay3 (list (cdr (assoc 2 LT)))
			  Laylist3 (append Laylist3 lay3)
			  LT (tblnext "LTYPE")
		 )
	)
	(setq 	Laylist1 (RemoveOverlap Laylist1)
			Laylist2 (RemoveOverlap Laylist2)
			Laylist3 (RemoveOverlap Laylist3))
)
;************************
(defun RemoveOverlap (	List2	/	List1	)
	(while List2
		(setq List1 (append List1 (list (car List2))))
		(setq List2 (vl-remove (car List2) List2))
	)
	List1
)
;;;---------Rotate----------------------------

(defun SD8446 ( PointA PointB Ang / XA YA XB YB PointC)

	(setq 	XA2(- (car PointA) (car PointB))
			YA2(- (cadr PointA) (cadr PointB))
	)
	(setq PointC (list (- (* XA2 (cos Ang))(* YA2 (sin Ang))) (+ (* XA2 (sin Ang))(* YA2 (cos Ang)))))
	(setq PointC (mapcar '+ PointC PointB))
	PointC
)
;****************************************************
(defun SD1862 (OldPt Ang / NewCs)
	(setq NewCs (SD8446 '(1 0) '(0 0) Ang))
	(setq NewPt (trans OldPt 0 NewCs))
	(setq NewPt (list (nth 2 NewPt)(nth 0 NewPt)))
	NewPt
)
;**********************
(defun SD3511 (g e)
	(cond
		((= (type e) 'ename) (cdr (assoc g (entget e))))
		((= (type e) 'list) (cdr (assoc g e)))
	)
)
;********************************
(defun *myerror* (msg)
	(setq *error* nil)
	(SD2056)
	(princ "\n Error in SpeedDraftLT")
	(princ)
)
	(princ "\n Command Name: JDIM")
(princ)

 

now modify it to prevent it from deleting the selected dimensions

image.png.bab6abaccd1bc2a6b8a325d974f55529.png

I would just like the new dimension created to shift a little so that it doesn't overlap.

Posted (edited)

Something simpler
You may need to customize the offset

 

(defun c:agrupaDIMs (/ n conj ent lstent pt pt1 pt2 ptIni ptFin desplz desplzX desplzY punto)
  (setq n 0)
  (if (setq conj (ssget '((0 . "DIMEN*"))))
    (while (setq ent (ssname conj n))
      (setq pt1 (cdr (assoc 13 (setq lstent (entget ent))))
	    pt2 (cdr (assoc 14 lstent))
	    desplz (distance pt2 (cdr (assoc 10 lstent)))

	    desplzX (- (car (cdr (assoc 10 lstent))) (car pt2))
	    desplzY (- (cadr (cdr (assoc 10 lstent))) (cadr pt2))
      )
      (if (< (car pt2) (car pt1))
	(setq pt pt1 pt1 pt2 pt2 pt)
	(if (= (car pt2) (car pt1))
	  ()
	)
      )
      (if ptIni
	(if (< (car pt1) (car ptIni))
	  (setq ptIni pt1)
	)
	(setq ptIni pt1)
      )
      (if ptFin
	(if (> (car pt2) (car ptFin))
	  (setq ptFin pt2)
	)
	(setq ptFin pt2)
      )
      (setq n (+ n 1))
    )
  )
  (setq punto (polar ptIni (angle ptIni ptFin) (/ (distance ptIni ptFin) 2.0))
        punto (list (+ (* desplzX 2.5) (car punto)) (+ (* desplzY 2.5) (cadr punto)))
  )
  (command "_dimaligned" ptIni ptFin punto)
  (princ)
)

 

Edited by GLAVCVS
  • Thanks 1
Posted

And also some system variables

  • Thanks 1
Posted
14 hours ago, GLAVCVS said:

Something simpler
You may need to customize the offset

 

(defun c:agrupaDIMs (/ n conj ent lstent pt pt1 pt2 ptIni ptFin desplz desplzX desplzY punto)
  (setq n 0)
  (if (setq conj (ssget '((0 . "DIMEN*"))))
    (while (setq ent (ssname conj n))
      (setq pt1 (cdr (assoc 13 (setq lstent (entget ent))))
	    pt2 (cdr (assoc 14 lstent))
	    desplz (distance pt2 (cdr (assoc 10 lstent)))

	    desplzX (- (car (cdr (assoc 10 lstent))) (car pt2))
	    desplzY (- (cadr (cdr (assoc 10 lstent))) (cadr pt2))
      )
      (if (< (car pt2) (car pt1))
	(setq pt pt1 pt1 pt2 pt2 pt)
	(if (= (car pt2) (car pt1))
	  ()
	)
      )
      (if ptIni
	(if (< (car pt1) (car ptIni))
	  (setq ptIni pt1)
	)
	(setq ptIni pt1)
      )
      (if ptFin
	(if (> (car pt2) (car ptFin))
	  (setq ptIni pt2)
	)
	(setq ptFin pt2)
      )
      (setq n (+ n 1))
    )
  )
  (setq punto (polar ptIni (angle ptIni ptFin) (/ (distance ptIni ptFin) 2.0))
        punto (list (+ (* desplzX 2.5) (car punto)) (+ (* desplzY 2.5) (cadr punto)))
  )
  (command "_dimaligned" ptIni ptFin punto)
  (princ)
)

 

 

It's precisely what I need,  I have only changed "_dimaligned" to "_dimlinear".

I have tried it in the following way , generate a group of dimensions I mirrored them and rotated them.

and this was the result...

image.thumb.png.4d5a335a77cfd95f54368a7e3cfc3a0a.png

Only on one occasion did he not do it as expected.

I don't know if the precision can be adjusted or something like that.

 

Posted

@leonucadomi

Copy the code again. Something has changed. Check if it works.

The accuracy should be adjustable with some system variable.

When I get home I'll take a look

  • Thanks 1
Posted
6 hours ago, leonucadomi said:

 

It's precisely what I need,  I have only changed "_dimaligned" to "_dimlinear".

I have tried it in the following way , generate a group of dimensions I mirrored them and rotated them.

and this was the result...

image.thumb.png.4d5a335a77cfd95f54368a7e3cfc3a0a.png

Only on one occasion did he not do it as expected.

I don't know if the precision can be adjusted or something like that.

 

 

Adjust precision?
Do you mean add decimals?

  • Thanks 1
Posted
8 minutes ago, GLAVCVS said:

 

Adjust precision?
Do you mean add decimals?

 

decimal precision no sorry,

 

the idea is that in any position in which the group of dimensions is located

up,down ,left or rigth dimensions are selected and a total dimension is added to those selected dimensions

image.thumb.png.2941394b51836904ada1ab82a1f0dab8.png

 

Posted (edited)

I have improved the algorithm for calculating the displacement.
This displacement will always be done in the direction of the others.

I hope it helps you

 

(defun c:agrupaDIMs (/	      n	       conj	ent	 lstent
		     pt	      pt1      pt2	ptIni	 ptFin
		     desplz   desplzX  desplzY	punto	 tamTX
		     gapTX    gapAcot  desplzMax	 osmant
		     ang 
		    )
  (setq	n      0
	osmant (getvar "OSMODE")
  )
  (setvar "OSMODE" 0)
  (if (setq conj (ssget '((0 . "DIMEN*"))))
    (progn
      (while (setq ent (ssname conj n))
	(setq pt1     (cdr (assoc 13 (setq lstent (entget ent))))
	      pt2     (cdr (assoc 14 lstent))
	      gapAcot (distance pt2 (cdr (assoc 10 lstent)))
	      ang     (angle pt2 (cdr (assoc 10 lstent)))
	      tamTX   (vlax-get-property
			(vlax-ename->vla-object ent)
			"TextHeight"
		      )
	      gapTX   (vlax-get-property
			(vlax-ename->vla-object ent)
			"TextGap"
		      )
	      desplz  (+ tamTX gapTX gapAcot)
	)
	(if desplzMax
	  (setq desplzMax (max desplzMax desplz))
	  (setq desplzMax desplz)
	)
	(if (< (car pt2) (car pt1))
	  (setq	pt  pt1
		pt1 pt2
		pt2 pt
	  )
	  (if (= (car pt2) (car pt1))
	    (if	(< (cadr pt2) (cadr pt1))
	      (setq pt	pt1
		    pt1	pt2
		    pt2	pt
	      )
	    )
	  )
	)
	  
	(if ptIni
	  (if (and
		(/= (car pt2) (car pt1))
		(< (car pt1) (car ptIni))
	      )
	    (setq ptIni pt1)
	    (if (= (car pt1) (car pt2))
	      (if (< (cadr pt1) (cadr ptIni))
		(setq ptIni pt1)
	      )
	    )
	  )
	  (setq ptIni pt1)
	)
	(if ptFin
	  (if (and
		(/= (car pt2) (car pt1))
		(> (car pt2) (car ptFin))
	      )
	    (setq ptFin pt2)
	    (if (= (car pt2) (car pt2))
	      (if (> (cadr pt2) (cadr ptFin))
		(setq ptFin pt2)
	      )
	    )
	  )
	  (setq ptFin pt2)
	)
	(setq n (+ n 1))
      )
      (setq punto (polar ptIni
			 (angle ptIni ptFin)
			 (/ (distance ptIni ptFin) 2.0)
		  )
	    punto (polar punto ang (* desplzMax 1.5))
      )
      (vl-cmdf "_dimaligned" ptIni ptFin punto)
      (setvar "OSMODE" osmant)
    )
  )
  (princ)
)

 

 

Edited by GLAVCVS
  • Like 1
Posted
28 minutes ago, GLAVCVS said:

I have improved the algorithm for calculating the displacement.
This displacement will always be done in the direction of the others.

I hope it helps you

 

(defun c:agrupaDIMs (/	      n	       conj	ent	 lstent
		     pt	      pt1      pt2	ptIni	 ptFin
		     desplz   desplzX  desplzY	punto	 tamTX
		     gapTX    gapAcot  desplzMax	 osmant
		     ang
		    )
  (setq	n      0
	osmant (getvar "OSMODE")
  )
  (setvar "OSMODE" 0)
  (if (setq conj (ssget '((0 . "DIMEN*"))))
    (progn
      (while (setq ent (ssname conj n))
	(setq pt1     (cdr (assoc 13 (setq lstent (entget ent))))
	      pt2     (cdr (assoc 14 lstent))
	      gapAcot (distance pt2 (cdr (assoc 10 lstent)))
	      ang     (angle pt2 (cdr (assoc 10 lstent)))
	      tamTX   (vlax-get-property
			(vlax-ename->vla-object ent)
			"TextHeight"
		      )
	      gapTX   (vlax-get-property
			(vlax-ename->vla-object ent)
			"TextGap"
		      )
	      desplz  (+ tamTX gapTX gapAcot)
	)
	(if desplzMax
	  (setq desplzMax (max desplzMax desplz))
	  (setq desplzMax desplz)
	)
	(if (< (car pt2) (car pt1))
	  (setq	pt  pt1
		pt1 pt2
		pt2 pt
	  )
	  (if (= (car pt2) (car pt1))
	    (princ)
	  )
	)
	(if ptIni
	  (if (< (car pt1) (car ptIni))
	    (setq ptIni pt1)
	  )
	  (setq ptIni pt1)
	)
	(if ptFin
	  (if (> (car pt2) (car ptFin))
	    (setq ptFin pt2)
	  )
	  (setq ptFin pt2)
	)
	(setq n (+ n 1))
      )
      (setq punto (polar ptIni
			 (angle ptIni ptFin)
			 (/ (distance ptIni ptFin) 2.0)
		  )
	    punto (polar punto ang (* desplzMax 1.5))
      )
      (vl-cmdf "_dimaligned" ptIni ptFin punto)
      (setvar "OSMODE" osmant)
    )
  )
  (princ)
)

stay the same :(

 

 

image.thumb.png.88f0d1855b3cc49e217d645086e52f35.png

Posted

Please copy and test the code again. I have changed something.

  • Thanks 1
Posted
16 hours ago, GLAVCVS said:

I have improved the algorithm for calculating the displacement.
This displacement will always be done in the direction of the others.

I hope it helps you

 

(defun c:agrupaDIMs (/	      n	       conj	ent	 lstent
		     pt	      pt1      pt2	ptIni	 ptFin
		     desplz   desplzX  desplzY	punto	 tamTX
		     gapTX    gapAcot  desplzMax	 osmant
		     ang 
		    )
  (setq	n      0
	osmant (getvar "OSMODE")
  )
  (setvar "OSMODE" 0)
  (if (setq conj (ssget '((0 . "DIMEN*"))))
    (progn
      (while (setq ent (ssname conj n))
	(setq pt1     (cdr (assoc 13 (setq lstent (entget ent))))
	      pt2     (cdr (assoc 14 lstent))
	      gapAcot (distance pt2 (cdr (assoc 10 lstent)))
	      ang     (angle pt2 (cdr (assoc 10 lstent)))
	      tamTX   (vlax-get-property
			(vlax-ename->vla-object ent)
			"TextHeight"
		      )
	      gapTX   (vlax-get-property
			(vlax-ename->vla-object ent)
			"TextGap"
		      )
	      desplz  (+ tamTX gapTX gapAcot)
	)
	(if desplzMax
	  (setq desplzMax (max desplzMax desplz))
	  (setq desplzMax desplz)
	)
	(if (< (car pt2) (car pt1))
	  (setq	pt  pt1
		pt1 pt2
		pt2 pt
	  )
	  (if (= (car pt2) (car pt1))
	    (if	(< (cadr pt2) (cadr pt1))
	      (setq pt	pt1
		    pt1	pt2
		    pt2	pt
	      )
	    )
	  )
	)
	  
	(if ptIni
	  (if (and
		(/= (car pt2) (car pt1))
		(< (car pt1) (car ptIni))
	      )
	    (setq ptIni pt1)
	    (if (= (car pt1) (car pt2))
	      (if (< (cadr pt1) (cadr ptIni))
		(setq ptIni pt1)
	      )
	    )
	  )
	  (setq ptIni pt1)
	)
	(if ptFin
	  (if (and
		(/= (car pt2) (car pt1))
		(> (car pt2) (car ptFin))
	      )
	    (setq ptFin pt2)
	    (if (= (car pt2) (car pt2))
	      (if (> (cadr pt2) (cadr ptFin))
		(setq ptFin pt2)
	      )
	    )
	  )
	  (setq ptFin pt2)
	)
	(setq n (+ n 1))
      )
      (setq punto (polar ptIni
			 (angle ptIni ptFin)
			 (/ (distance ptIni ptFin) 2.0)
		  )
	    punto (polar punto ang (* desplzMax 1.5))
      )
      (vl-cmdf "_dimaligned" ptIni ptFin punto)
      (setvar "OSMODE" osmant)
    )
  )
  (princ)
)

 

 

It's excellent now yes , thank you very much

Posted (edited)
17 minutes ago, leonucadomi said:

:( image.thumb.png.d4adcb6484eabba41798b821efc1638b.png

 

Edited by leonucadomi
WRONG
Posted
28 minutes ago, GLAVCVS said:

Very rare
Attach that drawing

sometimes it does and sometimes it doesn't ,  The routine that I put at the beginning of the topic does it well, I just want to move it so that it doesn't overlap

Drawing3.dwg

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