Copy object, move to 2nd point then divide in how many equal objets you want??

Not sure i'll make sense here. Looked in help and forum, even in autocad... can't find.

So; I create an object, then copy and move it to another point but want to have 3 of the objects in between all at equal distance, how do I do that quickly? I know the array and divide but for exemple...
In sketchup, you copy your object, move it to the other point, then "/" number ie 3 and it places it all for you at equal distance between the 2 points. No need to create an array or line and divide etc...

How do I do this in Bricscad? I'm sure there is a way right???

Thanks in advance.

Comments

  • You could do that with lisp. I did this just now:
    (DEFUN C:DRAW3 ( / SS PT1 PT2)
    (IF (AND (SETQ SS (SSGET))
    (SETQ PT1 (GETPOINT "\nPick base point:"))
    (SETQ PT2 (GETPOINT "\nPick 2nd point:"))
    )
    (PROGN
    (IF (NOT (WCMATCH (STRCASE (VLAX-PRODUCT-KEY)) "BRICSCAD"))(initcommandversion))
    (COMMAND "COPY" SS "" PT1
    (POLAR PT1 (ANGLE PT1 PT2)(/ (DISTANCE PT1 PT2) 3.0))
    (POLAR PT1 (ANGLE PT1 PT2)(* 2.0 (/ (DISTANCE PT1 PT2) 3.0)))
    (POLAR PT1 (ANGLE PT1 PT2)(DISTANCE PT1 PT2))
    ""
    )
    )
    )
    (PRINC)
    )

    the initcommandversion is needed for use in acad.
    This code works in acad, but I need to tweak for bcad as it is not doing multiple copy....

  • James Maeding
    edited November 2019

    this works, 2 variations:
    (DEFUN C:DRAW2 ( / SS PT1 PT2)
    (IF (AND (SETQ SS (SSGET))
    (SETQ PT1 (GETPOINT "\nPick base point:"))
    (SETQ PT2 (GETPOINT "\nPick 2nd point:"))
    )
    (PROGN
    (COMMAND "COPY" SS "" PT1 (POLAR PT1 (ANGLE PT1 PT2)(/ (DISTANCE PT1 PT2) 2.0)))
    (COMMAND "COPY" SS "" PT1 (POLAR PT1 (ANGLE PT1 PT2)(DISTANCE PT1 PT2)))
    )
    )
    (PRINC)
    )

    (DEFUN C:DRAW3 ( / SS PT1 PT2)
    (IF (AND (SETQ SS (SSGET))
    (SETQ PT1 (GETPOINT "\nPick base point:"))
    (SETQ PT2 (GETPOINT "\nPick 2nd point:"))
    )
    (PROGN
    (COMMAND "COPY" SS "" PT1 (POLAR PT1 (ANGLE PT1 PT2)(/ (DISTANCE PT1 PT2) 3.0)))
    (COMMAND "COPY" SS "" PT1 (POLAR PT1 (ANGLE PT1 PT2)(* 2.0 (/ (DISTANCE PT1 PT2) 3.0))))
    (COMMAND "COPY" SS "" PT1 (POLAR PT1 (ANGLE PT1 PT2)(DISTANCE PT1 PT2)))
    )
    )
    (PRINC)
    )

  • like this but easier. it took me too many minutes...

  • @James Maeding Wow thank you but this is way too advanced for me. I have no idea what you're talking about....

  • @plabill
    you can save that lisp to your desktop, then drag into black drawing area to load.
    Then type Draw2 or draw3 to run.
    You can tweak the code by adding copy statements and editing the distance:
    (DEFUN C:DRAW5 ( / SS PT1 PT2)
    (IF (AND (SETQ SS (SSGET))
    (SETQ PT1 (GETPOINT "\nPick base point:"))
    (SETQ PT2 (GETPOINT "\nPick 2nd point:"))
    )
    (PROGN
    (COMMAND "COPY" SS "" PT1 (POLAR PT1 (ANGLE PT1 PT2)(/ (DISTANCE PT1 PT2) 5.0)))
    (COMMAND "COPY" SS "" PT1 (POLAR PT1 (ANGLE PT1 PT2)(* 2.0 (/ (DISTANCE PT1 PT2) 5.0))))
    (COMMAND "COPY" SS "" PT1 (POLAR PT1 (ANGLE PT1 PT2)(* 3.0 (/ (DISTANCE PT1 PT2) 5.0))))
    (COMMAND "COPY" SS "" PT1 (POLAR PT1 (ANGLE PT1 PT2)(* 4.0 (/ (DISTANCE PT1 PT2) 5.0))))
    (COMMAND "COPY" SS "" PT1 (POLAR PT1 (ANGLE PT1 PT2)(DISTANCE PT1 PT2)))
    )
    )
    (PRINC)
    )

    That polar function is like (polar startpoint angle distance), so we are tweaking the distance to increments of 1/5 here...

  • Anthony Apostolaros
    edited November 2019

    You could also use the COPYM command in the free Express Tools for Bricscad:

    • select the objects to be copied;
    • pick the base point;
    • type D for Divide (but not Enter or Space);
    • pick the end point;
    • enter the number of copies to space equally between the base and end points.
  • @Anthony Apostolaros
    but learning lisp is so much easier :)
    Maybe I should start Express Tools for Bricscad Part Deux

  • James: Lisp isn't easy for me, but I think learning it is a good idea. It allows each user to customize to suit his or her own needs. One of the best things about Bricscad as opposed to the less user-friendly DWG cad software is that they don't charge an extra $4,000 for Lisp.

    For example, the Divide option is the only thing I ever use the CopyM command for. I can't even figure out what else it does. So it makes sense for me to customize it a little bit to insert the D automatically:

    ; CopyDivide: a custom version of the CopyM command in CADwiesel's Bricscad Express Tools, ; with the Divide option pre-selected. (defun c:CD () (setq ss1 (ssget "Selection set: ")) (setq b1 (getpoint "Base point: ")) (setq e1 (getpoint "End point: ")) (setq c1 (getint "Number of copies: ")) (command "CopyM" ss1 "" b1 "D" e1 c1) )

  • @Anthony Apostolaros
    So I downloaded the express tools and do exactly what you wrote but it doesn't work. Copym - then select my item, hit enter, then basepoint then hit D to divide but nothing happens. it asks me what object I want t divide???? then my object that I had selected stays highlighted in blue even if I hit escape???? I must have not installed something right???

  • Plabill: After selecting the base point, I get this bewildering prompt:
    [Repeat (last)/Divide/Measure/Array (dynamic)/Undo] <exit>:
    When I press the D key (without Enter or Space), the prompt immediately changes to this:
    Select division ending point:
    Then I pick the end point, and the prompt changes to this:
    Number of copies:
    I'm using Express Tools v16. Maybe it works differently in other versions?

  • I'm not sure. I noticed a few times something seems to appear and the command bar at the bottom but really quick and disappears. Not sure if something didn't install properly. I also noticed a few times there's a box that appears with options IE divide and I click on it but nothing happens. I'll figure it out I just get annoyed and quit it all together
  • Anthony Apostolaros
    edited November 2019

    Sometimes, while the command line is prompting me for the base point, a context menu with these options pops up:
    Repeat Divide Measure Array Undo eXit Cancel
    But I ignore it and pick the base point.
    If I click on "Divide" in that context menu, sometimes weird things happen, and sometimes the command just ends abruptly.

    You're not hitting Enter or Space after the D, are you? That's a surprising thing about this command. It took me a while to figure out not to do that. Though I guess it's possible that in a later version you might have to press Enter or Space.

    By the way, I use Bricscad v17, but Express Tools v16. I'm not sure how that happened, but it seems to work. If you're using newer versions, maybe you could try installing Express Tools v16.

  • I use V20. I installed the version of the link you sent. There didn't seem to be other version. It's installed because I see it in the tool bar.
  • What you wrote/command is exactly what you can do in SketchUp. I'm trying to avoid sketch shop. Even though it's fun I find that to get anything done you need to add so many extensions and some of them create problems
  • ok, be sure to turn off autocomplete/autocorrect, it is likely interrupting the command and is why I always have it off until desperate to remember some obscure command. Right click on command line and uncheck in red:

  • @James Maeding ok will try that. Thank you
  • Plabill: The box that says V20 for Windows is actually a pull-down list, with options going all the way back to v12.

  • @Anthony Apostolaros so you recommend I drive v16? will it work with v20? How do I remove the other or will it override it?
  • I also just realized you likely have old prompt menus turned on. set PROMPTMENU to 0.

  • What just happened here ???
    Just pick your stuff copy from pick point the to point. NOW hit "R"epeat and keep moving your mouse as many copies as you like.

  • @Patrik Sparrman Thank you. I already do that. It also works when doing an array. I was wondering if there were other way. As I wrote above, in SketchUp ie let's say I have a pillar that's sitting on the edge of the floor, I would grab the inside edge of the pillar (on the floor, not the edge of the floor) drag that side to the opposite edge of the floor (the inside touch point of my pillar is now the edge of the floor point) I click / 4 and it'll spread 4 pillars evenly on my floor. If I do what you say, I have to measure and calculate the distance before I copy and drag to make sure I meet my last point and not go beyond it.
    Makes sense?
    @James Maeding @Anthony Apostolaros
  • @plabill:
    Maybe my old BKG_CopyBetweenPoints program works for you.

  • @Roy Klein Gebbinck
    Thank you for this. I've installed it. no idea where it is in Bricscad or what command to use. I did bkg_copy… doesn't show... It's on my C drive, program, bricscad...

  • Anthony Apostolaros
    edited November 2019

    @plabill said:
    @Anthony Apostolaros so you recommend I drive v16? will it work with v20? How do I remove the other or will it override it?

    All I can tell you for certain is that v16 ET's CopyM + D (on v17 BC as it's installed and configured on my system) works just like Sketchup's Ctrl-Move + slash. I felt sure it would work the same way in v20, but apparently it doesn't, at least on your system.

    Sometimes you just have to try different things until something works. If I found myself in your position, I'd try installing an older version of Express Tools. Maybe start with v19, and if that doesn't work go to v18, etc. Another thing I might try is to forget about it for a few days to let my subconscious mind mull it over and figure out what's wrong.

    In v16, I think I can uninstall Express Tools just by deleting or moving the "Express" sub-folder from the Bricscad Program Files folder, and the "Express.cui" file from the Bricscad User Support folder. And maybe go into Tools > Customize > Menus and right-click on the "Express" menu group and unload it (but that can probably stay and be used by the new version).

Sign In or Register to comment.

Howdy, Stranger!

It looks like you're new here. Click one of the buttons on the top bar to get involved!