Jump to content

Has anyone a lisp for extacting y values


coombsie11
 Share

Recommended Posts

Hello.

 

I am looking for a lisp routine that will make adding levels to section drawings much easier. I know that they exist, as I have come across one in the past.

 

Once I have set a datum to a specific level, using the UCS in AutoCad I would then like to -

 

select/id a point, endp or nearest and have a predefined arrow block inserted at this point, with the Y value (level) given in predefined text next to it. Text and block in layer "LEVELS".

 

Its obviously so much quicker than IDing a point and then hand typing the text after and it eliminates user error too.

 

Can anyone help me please?:)

Link to comment
Share on other sites

  • Replies 39
  • Created
  • Last Reply

Top Posters In This Topic

  • Lee Mac

    16

  • alanjt

    10

  • pontifex

    6

  • uddfl

    3

Top Posters In This Topic

Posted Images

Why not use ordinate dimensions?

 

But here, have this LISP. It does not insert blocks but it's for updating existing text/blocks. Still pretty useful and can be easily extended to suit your exact needs.

 

(defun c:ue (); update elevation text
 (setq prev-osm (getvar "osmode"))
 (setq ypoint (cadr (getpoint "\nSpecify reference point for elevation: ")))
 (setq entname (car (nentsel)))
 (setq entlist (entget entname))
 (setq entlist (subst (cons 1 (rtos ypoint)) (assoc 1 entlist) entlist))
 (entupd entname)
 (entmod entlist)
 (princ)
)

Link to comment
Share on other sites

I don't want to steal Lee Mac's glory, but here is one I wrote earlier. It draws a little triangle at the level point, and the level alongside.

 

;ELLEV is a programme to annotate levels of lines drawn for an elevation
(defun C:ELLEV (/ pt0 pt1 pt2 pt3 el elev x scale tsize)
          (if (= sc nil) (setq sc 100))
          (princ (strcat "\nEnter drawing scale <" (rtos sc 2 0) ">: "))
          (setq scale (getint))
          (if (= scale nil) (setq scale sc))
          (setq sc scale)
          (setq tsize (* 0.002 sc))
          (setvar "OSMODE" 1)   ; this sets Objectsnap to endpoint
          (while (setq pt0 (getpoint "\nPick elevation line point. . . . . ")
                x (car pt0)
                el (cadr pt0)
                elev (rtos el 2 3); set last figure for number of decimal places
                pt1 (list (+ x (* 0.002 sc)) (+ el (* 0.002 sc)))  ; text position
                pt2 (list (- x (* 0.001 sc)) (+ el (* 0.002 sc))) ;triangle position
                pt3 (list (+ x (* 0.001 sc)) (+ el (* 0.002 sc)))

           )
           (setvar "OSMODE" 0)
           (command "LINE" pt0 pt2 pt3 "c")
           (command "TEXT" pt1 tsize "0" elev)   ;0.2 for 1 to 100
           (setvar "OSMODE" 1)
           )
)
                    

EllevationLevel.jpg

Link to comment
Share on other sites

Thanks alot guys. I have tried the lsp and its just what I'm after. :D

 

Think that I will play around with it a little, so that it adds my arrow block and then I'll be adding levels like theres no tomorrow.:?

Link to comment
Share on other sites

  • 1 year later...

Hi guys. I`ve been using this forum for a quite while now and it was very helpful so far. Especially when it comes to this lisp. And i was wondering, since i`m a newbie to lisp, dont know how to exactly change this - is there a way to add to every positive values "+" sign at the beginning of text. When it comes to negatives it works like a charm. And one other thing - how can i set default value of decimal places to 2?

Link to comment
Share on other sites

Welcome to CADTutor :)

 

This should be faster and more robust :)

 

[b][color=RED]([/color][/b][b][color=BLUE]defun[/color][/b] c:ellev [b][color=RED]([/color][/b][b][color=BLUE]/[/color][/b] *error* Line Text P1 P2 PT PTW TSZE XW Y YW[b][color=RED])[/color][/b]
 [i][color=#990099];; Lee Mac  ~  01.03.10[/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]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=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] Line [b][color=RED]([/color][/b]p1 p2[b][color=RED])[/color][/b]
   [b][color=RED]([/color][/b][b][color=BLUE]entmakex[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]list[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]cons[/color][/b] [b][color=#009900]0[/color][/b] [b][color=#a52a2a]"LINE"[/color][/b][b][color=RED])[/color][/b]
                   [b][color=RED]([/color][/b][b][color=BLUE]cons[/color][/b] [b][color=#009900]10[/color][/b] p1[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]cons[/color][/b] [b][color=#009900]11[/color][/b] p2[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=BLUE]defun[/color][/b] Text [b][color=RED]([/color][/b]pt hgt str[b][color=RED])[/color][/b]
   [b][color=RED]([/color][/b][b][color=BLUE]entmakex[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]list[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]cons[/color][/b] [b][color=#009900]0[/color][/b] [b][color=#a52a2a]"TEXT"[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]cons[/color][/b] [b][color=#009900]10[/color][/b]  pt[b][color=RED])[/color][/b]
                   [b][color=RED]([/color][/b][b][color=BLUE]cons[/color][/b] [b][color=#009900]40[/color][/b] hgt[b][color=RED])[/color][/b]   [b][color=RED]([/color][/b][b][color=BLUE]cons[/color][/b] [b][color=#009900]1[/color][/b]  str[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=BLUE]or[/color][/b] *scl [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] *scl [b][color=#009900]100[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
 [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] *scl [b][color=RED]([/color][/b][b][color=BLUE]cond[/color][/b] [b][color=RED]([/color][/b][b][color=RED]([/color][/b][b][color=BLUE]getint[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]strcat[/color][/b] [b][color=#a52a2a]"\nEnter Drawing Scale <"[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]itoa[/color][/b] *scl[b][color=RED])[/color][/b] [b][color=#a52a2a]"> : "[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b]*scl[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] tsze [b][color=RED]([/color][/b][b][color=BLUE]*[/color][/b] [b][color=#009999]0.002[/color][/b] *scl[b][color=RED])[/color][/b][b][color=RED])[/color][/b]

 [b][color=RED]([/color][/b][b][color=BLUE]while[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] pt [b][color=RED]([/color][/b][b][color=BLUE]getpoint[/color][/b] [b][color=#a52a2a]"\nPick Elevation Line Point: "[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
   [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] ptw [b][color=RED]([/color][/b][b][color=BLUE]trans[/color][/b] pt [b][color=#009900]1[/color][/b] [b][color=#009900]0[/color][/b][b][color=RED])[/color][/b] xw [b][color=RED]([/color][/b][b][color=BLUE]car[/color][/b] ptw[b][color=RED])[/color][/b] yw [b][color=RED]([/color][/b][b][color=BLUE]cadr[/color][/b] ptw[b][color=RED])[/color][/b] y [b][color=RED]([/color][/b][b][color=BLUE]cadr[/color][/b] pt[b][color=RED])[/color][/b][b][color=RED])[/color][/b]

   [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] p1 [b][color=RED]([/color][/b][b][color=BLUE]list[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]-[/color][/b] xw [b][color=RED]([/color][/b][b][color=BLUE]/[/color][/b] tsze [b][color=#009900]2[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]+[/color][/b] yw tsze[b][color=RED])[/color][/b] [b][color=#009999]0.[/color][/b][b][color=RED])[/color][/b]
         p2 [b][color=RED]([/color][/b][b][color=BLUE]list[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]+[/color][/b] xw [b][color=RED]([/color][/b][b][color=BLUE]/[/color][/b] tsze [b][color=#009900]2[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]+[/color][/b] yw tsze[b][color=RED])[/color][/b] [b][color=#009999]0.[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]

   [b][color=RED]([/color][/b][b][color=BLUE]mapcar[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]function[/color][/b] [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]line ptw x[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]list[/color][/b] p1 p2[b][color=RED])[/color][/b][b][color=RED])[/color][/b]
   [b][color=RED]([/color][/b]line p1 p2[b][color=RED])[/color][/b]

   [b][color=RED]([/color][/b]Text [b][color=RED]([/color][/b][b][color=BLUE]list[/color][/b] xw [b][color=RED]([/color][/b][b][color=BLUE]+[/color][/b] yw tsze[b][color=RED])[/color][/b] [b][color=#009999]0.[/color][/b][b][color=RED])[/color][/b] tsze [b][color=RED]([/color][/b][b][color=BLUE]strcat[/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]0[/color][/b] y[b][color=RED])[/color][/b] [b][color=#a52a2a]"+"[/color][/b] [b][color=#a52a2a]""[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]rtos[/color][/b] y [b][color=#009900]2[/color][/b] [b][color=#009900]2[/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=BLUE]princ[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]

Link to comment
Share on other sites

Thanks for quick reply Lee. The thing is - it doesn't work in local UCS. Is there a way to adjust it? :)

 

It should account for UCS other than World :unsure:

Link to comment
Share on other sites

It seems that it doesn't. The other thing is that when i click at a point with integer value (0 for example in the attach.) , it doesnt put +0,00 as i was hoping it to do.

untitled.JPG

Link to comment
Share on other sites

The other thing is that when i click at a point with integer value (0 for example in the attach.) , it doesnt put +0,00 as i was hoping it to do.

 

It is set to show three d.p. - the trailing zeros are affected by your Sys Var settings, not my code.

Link to comment
Share on other sites

As for the UCS thing - the point was correct, just the elevation text was relative to WCS, not UCS. I have updated the original code to account for this.

Link to comment
Share on other sites

It is set to show three d.p. - the trailing zeros are affected by your Sys Var settings, not my code.

Check the dimzin variable.

Link to comment
Share on other sites

:ouch:Found it, my mistake. Sorry. Didn't realize it wasn't the code. I hope this isn't one of the stupid questions: can the code use curently used text style or it can only use the standard/default one? My text font in the drawings isn't the "Standard" one used as default by Autocad. Everything else works perfect! Thank You Lee :D

Link to comment
Share on other sites

can the code use curently used text style or it can only use the standard/default one?

 

Certainly:

 

[b][color=RED]([/color][/b][b][color=BLUE]defun[/color][/b] c:ellev [b][color=RED]([/color][/b][b][color=BLUE]/[/color][/b] *error* Line Text P1 P2 PT PTW TSZE XW Y YW[b][color=RED])[/color][/b]
 [i][color=#990099];; Lee Mac  ~  01.03.10[/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]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=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] Line [b][color=RED]([/color][/b]p1 p2[b][color=RED])[/color][/b]
   [b][color=RED]([/color][/b][b][color=BLUE]entmakex[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]list[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]cons[/color][/b] [b][color=#009900]0[/color][/b] [b][color=#a52a2a]"LINE"[/color][/b][b][color=RED])[/color][/b]
                   [b][color=RED]([/color][/b][b][color=BLUE]cons[/color][/b] [b][color=#009900]10[/color][/b] p1[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]cons[/color][/b] [b][color=#009900]11[/color][/b] p2[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=BLUE]defun[/color][/b] Text [b][color=RED]([/color][/b]pt hgt str[b][color=RED])[/color][/b]
   [b][color=RED]([/color][/b][b][color=BLUE]entmakex[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]list[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]cons[/color][/b] [b][color=#009900]0[/color][/b] [b][color=#a52a2a]"TEXT"[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]cons[/color][/b] [b][color=#009900]10[/color][/b]  pt[b][color=RED])[/color][/b]
                   [b][color=RED]([/color][/b][b][color=BLUE]cons[/color][/b] [b][color=#009900]40[/color][/b] hgt[b][color=RED])[/color][/b]   [b][color=RED]([/color][/b][b][color=BLUE]cons[/color][/b] [b][color=#009900]1[/color][/b]  str[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]cons[/color][/b] [b][color=#009900]7[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]getvar[/color][/b] [b][color=DARKRED]'[/color][/b]TEXTSTYLE[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][b][color=BLUE]or[/color][/b] *scl [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] *scl [b][color=#009900]100[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
 [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] *scl [b][color=RED]([/color][/b][b][color=BLUE]cond[/color][/b] [b][color=RED]([/color][/b][b][color=RED]([/color][/b][b][color=BLUE]getint[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]strcat[/color][/b] [b][color=#a52a2a]"\nEnter Drawing Scale <"[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]itoa[/color][/b] *scl[b][color=RED])[/color][/b] [b][color=#a52a2a]"> : "[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b]*scl[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] tsze [b][color=RED]([/color][/b][b][color=BLUE]*[/color][/b] [b][color=#009999]0.002[/color][/b] *scl[b][color=RED])[/color][/b][b][color=RED])[/color][/b]

 [b][color=RED]([/color][/b][b][color=BLUE]while[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] pt [b][color=RED]([/color][/b][b][color=BLUE]getpoint[/color][/b] [b][color=#a52a2a]"\nPick Elevation Line Point: "[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
   [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] ptw [b][color=RED]([/color][/b][b][color=BLUE]trans[/color][/b] pt [b][color=#009900]1[/color][/b] [b][color=#009900]0[/color][/b][b][color=RED])[/color][/b] xw [b][color=RED]([/color][/b][b][color=BLUE]car[/color][/b] ptw[b][color=RED])[/color][/b] yw [b][color=RED]([/color][/b][b][color=BLUE]cadr[/color][/b] ptw[b][color=RED])[/color][/b] y [b][color=RED]([/color][/b][b][color=BLUE]cadr[/color][/b] pt[b][color=RED])[/color][/b][b][color=RED])[/color][/b]

   [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] p1 [b][color=RED]([/color][/b][b][color=BLUE]list[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]-[/color][/b] xw [b][color=RED]([/color][/b][b][color=BLUE]/[/color][/b] tsze [b][color=#009900]2[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]+[/color][/b] yw tsze[b][color=RED])[/color][/b] [b][color=#009999]0.[/color][/b][b][color=RED])[/color][/b]
         p2 [b][color=RED]([/color][/b][b][color=BLUE]list[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]+[/color][/b] xw [b][color=RED]([/color][/b][b][color=BLUE]/[/color][/b] tsze [b][color=#009900]2[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]+[/color][/b] yw tsze[b][color=RED])[/color][/b] [b][color=#009999]0.[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]

   [b][color=RED]([/color][/b][b][color=BLUE]mapcar[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]function[/color][/b] [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]line ptw x[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]list[/color][/b] p1 p2[b][color=RED])[/color][/b][b][color=RED])[/color][/b]
   [b][color=RED]([/color][/b]line p1 p2[b][color=RED])[/color][/b]

   [b][color=RED]([/color][/b]Text [b][color=RED]([/color][/b][b][color=BLUE]list[/color][/b] xw [b][color=RED]([/color][/b][b][color=BLUE]+[/color][/b] yw tsze[b][color=RED])[/color][/b] [b][color=#009999]0.[/color][/b][b][color=RED])[/color][/b] tsze [b][color=RED]([/color][/b][b][color=BLUE]strcat[/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]0[/color][/b] y[b][color=RED])[/color][/b] [b][color=#a52a2a]"+"[/color][/b] [b][color=#a52a2a]""[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]rtos[/color][/b] y [b][color=#009900]2[/color][/b] [b][color=#009900]2[/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=BLUE]princ[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]

 

 

Glad the code works for you :)

Link to comment
Share on other sites

Lee,

One other thing I realised, I promise :) While in the local UCS, can the text as well as the triangle automatically rotate to be parallel to the X axis just like it is when I'm in WCS? :oops:

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

 Share


×
×
  • Create New...