ARKANCE - globální Platinum partner Autodesk ARKANCE | KONTAKT - CZ | SK | EN | DE
Registrujte se na 22. ročník konference CADfórum 2025 - 30.9. Zámek Valeč.
Přes 118.500 registrovaných u nás, celkem 1.096.000 registrovaných (CZ+EN), přes 53.000 CAD/BIM bloků. Vyzkoušejte nový přesný Inženýrský kalkulátor a aktualizovaný Generátor čarových kódů.
RSS kanál - CAD tipy RSS tipy
RSS diskuze

Diskuze Diskuzní fórum, poradna

?
CAD diskuze, rady, výměna zkušeností

CAD Fórum - Homepage Veřejné diskuzní fórum k CAD aplikacím - ptejte se na libovolné otázky týkající se oboru CAx, podělte se o vaše znalosti a zkušenosti s programy AutoCAD, Inventor, Revit, Fusion, 3ds Max, Vault a s dalšími CAD/BIM/PDM aplikacemi. Zaregistrujte se nebo se přihlašte a zašlete váš příspěvek do odpovídajícího fóra. Viz další informace o CAD Fóru. Nechcete se registrovat? Zeptejte se v naší Facebook poradně.
Fórum nenahrazuje technický support firmy ARKANCE (CAD Studio) - přímá podpora pro zákazníky funguje na helpdesk.arkance-systems.cz
  FAQ FAQ  Prohledat fórum   Události   Registrovat Registrovat  Přihlásit Přihlásit

Téma uzavřenoRychlé otočení

 Odpovědět Odpovědět archiv
Autor
BenaCZ Zobrazit panel
Diskutér
Diskutér

Přihlášen: 02.říj.2006
Lokalita: ČR (Pha)
Používám:
AutoCad2007
Stav: Offline
Bodů: 60
Přímý odkaz na tuto zprávu Téma: Rychlé otočení
    Zasláno: 06.říj.2006 v 11:00
Mohli byste mi prosím poradit co mám v kódu špatně?
Má to být lisp na funkci otočit (použít referenci, zadat střed otáčení, zadat 1.bod a 2. bod otáčení)
Ono se mi to ale otáčí o jiný úhel...

(defun otocrychle (selected_object / stredpt firstpt endpt)
(setq stredpt (getpoint "\nVyber stred otáčení:"))
(setq firstpt (getpoint "\nVyber 1. bod otáčení:"))
(setq endpt (getpoint "\nVyber 2. bod otáčení:"))
(command "_rotate" selected_object "" stredpt "R" "" stredpt firstpt endpt "")
)

(defun C:otocr (/ selected)
(terpri)
(setq selected (entsel "Vyber objekty:"))
(otocrychle selected)
)

P.S. Jsem začátečník

Díky Bena
Bena
Zpět nahoru
Vladimír Michl Zobrazit panel
Moderátor
Moderátor
Avatar
ARKANCE

Přihlášen: 09.zář.2004
Lokalita: ČR (JČ)
Používám:
Implementujeme řešení Autodesk
Stav: Offline
Bodů: 21949
Přímý odkaz na tuto zprávu Zasláno: 06.říj.2006 v 14:10
Na první pohled to vypadá v pořádku. Snad jen (nesouvisející) drobnosti - "objekt", ne "objekty" a "_R", ne "R".
Jste si vědom, že úhel zadáváte referencí (rozdílem) od stávajícího úhlu, ne absolutně? Drobné odchylky mohou být způsobeny též uchopovacími režimy, 3D, USS, apod.
Vladimír Michl (moderátor)
ARKANCE CZ - arkance.world
(podpora viz helpdesk.arkance-systems.cz)
Zpět nahoru
Ferdinand Zobrazit panel
TOP uživatel
TOP uživatel

Přihlášen: 01.říj.2004
Lokalita: ČR (JM)
Používám:
AutoCAD2004 (EN) na Windows XP
Stav: Offline
Bodů: 1906
Přímý odkaz na tuto zprávu Zasláno: 06.říj.2006 v 14:34
Já už pro jistotu píšu na začátek každého lispu
(setq OSM (getvar "osmode"))
(setq ORM (getvar "orthomode"))
(setq SNM (getvar "snapmode"))
(setvar "osmode" 0)
(setvar "orthomode" 0)
(setvar "snapmode" 0)
a na konci obnovím na původní
(setvar "osmode" OSM)
(setvar "orthomode" ORM)
(setvar "snapmode" SNM)
-FerTh-
Zpět nahoru
BenaCZ Zobrazit panel
Diskutér
Diskutér

Přihlášen: 02.říj.2006
Lokalita: ČR (Pha)
Používám:
AutoCad2007
Stav: Offline
Bodů: 60
Přímý odkaz na tuto zprávu Zasláno: 06.říj.2006 v 15:27
Doplnil jsem tam ty ortho a kroky. Změnil jsem to na vícenásobný výběr, ale pořád mi to nefunguje.
Jde mi o to, abych otočil objekty pomocí reference a aby střed otáčení byl stejný jako počátek, který určuje počáteční úhel. Pak bych chtěl kliknout na jeden bod (tím získat počáteční úhel) a pak na druhý bod a tím směrem objekt otočit. Tady je upravený kód:

(defun C:otocr (/ ORM SNM mysset counter stredpt firstpt endpt)
;nastaví orto a krok na 0
(setq ORM (getvar "orthomode"))
(setq SNM (getvar "snapmode"))
(setvar "orthomode" 0)
(setvar "snapmode" 0)
;násobný výběr
(setq mysset (ssget))
(setq counter 0)
(while (< counter (sslength mysset))
    (terpri)
    (setq counter (+ counter 1))
    )
;vlastní funkce
(setq stredpt (getpoint "\nVyber stred otáčení:"))
(setq firstpt (getpoint "\nVyber 1. bod otáčení:"))
(setq endpt (getpoint "\nVyber 2. bod otáčení:"))
(command "_rotate" mysset "" stredpt "_R" "" stredpt firstpt endpt)

; obnovuje původní orto a krok atd
(setvar "orthomode" ORM)
(setvar "snapmode" SNM)
)

Mám pocit, že mi nefunguje ten endpt a otáčí se mi to podle původně nastaveného referenčního úhlu. Nevíte proč?
Bena
Zpět nahoru
Ferdinand Zobrazit panel
TOP uživatel
TOP uživatel

Přihlášen: 01.říj.2004
Lokalita: ČR (JM)
Používám:
AutoCAD2004 (EN) na Windows XP
Stav: Offline
Bodů: 1906
Přímý odkaz na tuto zprávu Zasláno: 10.říj.2006 v 19:40
Hm, tak to tedy nevím.
Zkusit to překontrolovat v lisp editoru ?
Úhlové jednotky a smysl úhlu máte OK?
Anebo nepomohlo by prvně změřit úhel od osy X (anebo Y ?) /tj. střed či počátek úhlu/  k zadanému bodu /tj. směr vektoru/ a teprve pak to tam mlasknout jako vybranou/zadanou hodnotu?
-FerTh-
Zpět nahoru
BenaCZ Zobrazit panel
Diskutér
Diskutér

Přihlášen: 02.říj.2006
Lokalita: ČR (Pha)
Používám:
AutoCad2007
Stav: Offline
Bodů: 60
Přímý odkaz na tuto zprávu Zasláno: 10.říj.2006 v 22:18
Tak jsem to zdárně vyřešil. Asi jsem špatně chápal, jak to vlastně autocad při tom otáčení dělá. Tak jsem zkoumal jak to vlastně funguje při normálním otáčení a zapsal jsem pak tento kód:

;;; Otočí podle 3 bodů
(defun C:otocr (/        ORM           SNM               mysset
          counter        stredpt    firstpt      endpt         angle_new
          angle1        angle2     delta_x1      delta_y1   delta_x2
          delta_y2
            )
;;;nastaví orto a krok na 0
(setq ORM (getvar "orthomode"))
(setq SNM (getvar "snapmode"))
(setvar "orthomode" 0)
(setvar "snapmode" 0)
;;;násobný výběr
(setq mysset (ssget))
(setq counter 0)
(while (< counter (sslength mysset))
    (terpri)
    (setq counter (+ counter 1))
)
;;;vlastní funkce
(setq stredpt (getpoint "\nVyber stred otáčení:"))
(setq firstpt (getpoint "\nVyber 1. bod otáčení:"))
(setq endpt (getpoint "\nVyber 2. bod otáčení:"))
(setq delta_x1 (- (nth 0 firstpt) (nth 0 stredpt)))
(setq delta_y1 (- (nth 1 firstpt) (nth 1 stredpt)))
(setq angle1 (atan delta_y1 delta_x1))
(setq delta_x2 (- (nth 0 endpt) (nth 0 stredpt)))
(setq delta_y2 (- (nth 1 endpt) (nth 1 stredpt)))
(setq angle2 (atan delta_y2 delta_x2))
(setq angle_new (atof (angtos (- angle2 angle1) 0 2)))
(command "_rotate" mysset "" stredpt angle_new)

;;; obnovuje původní orto a krok
(setvar "orthomode" ORM)
(setvar "snapmode" SNM)
)


A to už funguje báječně. Bena
Bena
Zpět nahoru
Ferdinand Zobrazit panel
TOP uživatel
TOP uživatel

Přihlášen: 01.říj.2004
Lokalita: ČR (JM)
Používám:
AutoCAD2004 (EN) na Windows XP
Stav: Offline
Bodů: 1906
Přímý odkaz na tuto zprávu Zasláno: 11.říj.2006 v 10:25
Pořád ale mi nějak uniká smysl této procedury. V čem je to teda lepší/rychlejší? Proč nepoužívat raději ono klasické otáčení?
-FerTh-
Zpět nahoru
BenaCZ Zobrazit panel
Diskutér
Diskutér

Přihlášen: 02.říj.2006
Lokalita: ČR (Pha)
Používám:
AutoCad2007
Stav: Offline
Bodů: 60
Přímý odkaz na tuto zprávu Zasláno: 11.říj.2006 v 10:31
No když otáčím klasicky, tak musím zadat nejdřív co otočit, pak střed otačení, pak dát R, pak znovu střed, koncový bod 1. směru a pak koncový bod 2. směru.

Zatímco v nové funkci dám co otočit, střed, koncový bod 1.směru a koncový bod 2. směru. Ušetřím tím několik kroků.
Bena
Zpět nahoru
Ferdinand Zobrazit panel
TOP uživatel
TOP uživatel

Přihlášen: 01.říj.2004
Lokalita: ČR (JM)
Používám:
AutoCAD2004 (EN) na Windows XP
Stav: Offline
Bodů: 1906
Přímý odkaz na tuto zprávu Zasláno: 13.říj.2006 v 13:52
Cituji příkazový řádek [+ komentáře]:

Command: _rotate
Current positive angle in UCS:  ANGDIR=counterclockwise  ANGBASE=0.00

Select objects:  
[pick1-CrossWindow/Window]  Specify opposite corner:   [pick2-CrossWindow/Window]  97 found  [anebo se vyfiltrují potřebné entity, případně se zadá _All]
3 were on a locked la-yer.

Select objects: 
[Enter]

Specify base point: 
[pick3, anebo se zadá PočátečníBod]

Specify rotation angle or [Reference]:  [pick4, anebo se zadá HodnotaUhlu]

Upravil Ferdinand - 13.říj.2006 v 13:54
-FerTh-
Zpět nahoru

Pro technickou podporu CAD
kontaktujte Helpdesk

Příbuzné CAD tipy:
Tip 12345:Jak změnit souřadnicový systém (rovinu) náčrtu Inventoru?
Tip 13619:Jak v AutoCADu LT rychle otočit pohled o 90°?
Tip 5409:Snadné otočení popisků v Civil 3D.
Tip 3731:VIPTexty pod libovolným úhlem ve výkresech Inventoru.
Tip 527:Proč je otočení mého výkresu nesprávné?
Tip 9086:VIPJak vytvořit 2D axonometrický pohled v AutoCAD Plant 3D?


 Odpovědět Odpovědět

Přejít na fórum Oprávnění fóra Zobrazit panel



Stránka byla vygenerována za 0,230 sekund.