Diskuzní fórum a databáze tipů a utilit pro AutoCAD, Inventor, Revit a další produkty Autodesk - od firmy Arkance Systems [www.cadforum.cz]
CZ | SK | EN | DE
Přihlášení
či registrace
   právě nás čte: 5000 
RSS kanál - CAD tipy RSS tipy
RSS diskuze

Diskuze Diskuzní fórum, poradna

 

NápovědaCAD 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 360, 3ds Max a s dalšími CAD 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 Systems (CAD Studio) - přímá podpora pro zákazníky funguje na helpdesk.cadstudio.cz
  FAQ FAQ  Prohledat fórum   Události   Registrovat Registrovat  Přihlásit Přihlásit

Téma uzavřenoAutoLISP Pomoc

 Odpovědět Odpovědět archiv
Autor
arcHI4 Zobrazit panel
Nováček
Nováček

Přihlášen: 18.lis.2017
Lokalita: Slovensko
Používám:
AutoCAD 2018
Stav: Offline
Bodů: 6
Přímý odkaz na tuto zprávu Téma: AutoLISP Pomoc
    Zasláno: 18.lis.2017 v 17:50
Dobrý deň všetkým,

mám jeden problém, ktorý sám neviem vyriešiť kvôli mojej slabej znalosti LISPu v AutoCADE. Potrebujem napísať nasledovné:

Užívateľ zadá stred a stranu štvorca. Následne sa ho AutoCAD opýta, či chce kresliť štvorce s menším alebo väčším polomerom a na počet štvorcov. Tie sa potom vykreslia (s pevne daným krokom, napr. 1) každý inou farbou. Pozor na prípad, kedy je dĺžka strany záporná.

Našiel by sa tu niekto, kto ovláda LISP a zvládol by niečo podobné ? Veľmi veľmi by ste mi pomohli.

Vopred ďakujem.
Zpět nahoru
Vladimír Michl Zobrazit panel
Moderátor
Moderátor
Avatar
Arkance Systems

Přihlášen: 09.zář.2004
Lokalita: ČR (JČ)
Používám:
Dodáváme produkty Autodesk
Stav: Offline
Bodů: 21434
Přímý odkaz na tuto zprávu Zasláno: 18.lis.2017 v 19:06
Asi bude potřeba podrobnější zadání - co je "poloměr čtverce"? co je myšleno krokem a počtem - nějaké pole? jak se mají střídat barvy?
Vladimír Michl (moderátor)
Arkance Systems s.r.o. - www.arkance-systems.cz
(podpora viz hd.cads.cz)
Zpět nahoru
arcHI4 Zobrazit panel
Nováček
Nováček

Přihlášen: 18.lis.2017
Lokalita: Slovensko
Používám:
AutoCAD 2018
Stav: Offline
Bodů: 6
Přímý odkaz na tuto zprávu Zasláno: 19.lis.2017 v 13:18
To zadanie je napísané vážne dosť nezrozumiteľne, ale pokúsim sa to nejak zreprodukovať:

Celé by sa to malo podľa mňa zaštítiť pod príkazom ''polygon'', s tým, že počet strán bude pevne 4 (aby to bol vždy štvorec), a vždy bude na pevno pokračovať s možnosťou vpisovania kružnice (circumscribed about circle), aby sa vlastne dosiahlo zadávanie toho ''polomeru kružnice''

Čiže asi nejaká postupnosť by mohla vyzerať nasledovne:

Zadáme príkaz --> (cad si automaticky vyberie polygon a zadá počet strán na 4) --> od nás si vypýta bod odkiaľ bude kresliť dané štvorce ---> (cad automaticky vyberie ''circumscribed about circle'') --> a vypýta si od nás hodnotu, ktorá bude vlastne polomer štvorca ---> tento štvorec sa vykreslí

Drúhá časť: cad si vypýta či chceme kresliť štvorce s menším alebo väčším polomerom a potom na ich počet (s pevne daným krokom napr. 1) a každý inou farbou (je úplne jedno aké farby).

A treba nejako vyriešiť ešte ten zápor.




Upravil arcHI4 - 19.lis.2017 v 16:53
Zpět nahoru
johny Zobrazit panel
TOP uživatel
TOP uživatel

Přihlášen: 24.led.2006
Lokalita: ČR (JM)
Používám:
C3D 2022
Stav: Offline
Bodů: 1671
Přímý odkaz na tuto zprávu Zasláno: 19.lis.2017 v 19:16
Někdy je lepší obrázek... Snad jsem to pochopil, jinak si to upravte dle libosti...

(vl-load-com)

(defun c:Squares ( / *error* adoc pnt rad ckr n i cmd 1+-)

  (defun *error* (msg)
    (if (not (wcmatch msg "Function cancelled,quit / exit abort,console break,end"))
      (princ (strcat "\nError: " msg)))
    (if cmd (setvar 'CMDECHO cmd))
    (vla-endundomark adoc)
    (princ))

  (vla-endundomark (setq adoc (vla-get-activedocument (vlax-get-acad-object))))
  (vla-startundomark adoc)
  
  (if (and (setq pnt (getpoint "\nSpecify centre of square: "))
   (not (initget (+ 2 3)))
   (setq rad (getdist "\nSpecify initial radius: "))
   (not (initget 2))
   (setq n (getdist (strcat "\nSpecify number of steps (min: -" (itoa (fix rad)) "): ")))
   (or (> (+ rad n) 0)
       (prompt "\nError: Number of decreasing steps leads radius below zero!"))
   (setq 1+- (if (minusp n) 1- 1+)
n (abs n) 
i 0
clr 1
cmd (getvar 'CMDECHO))
   (setvar 'CMDECHO 0)
   )
    (while (<= (setq i (1+ i)) n)
      (command "_.POLYGON" 4 "_non" pnt "_C" rad
       "_.CHPROP" "_L" "" "_C" (setq clr (if (= clr 251) 11 (+ clr 10))) "")
      (setq rad (1+- rad))))
  (*error* "end")
)
Zpět nahoru
arcHI4 Zobrazit panel
Nováček
Nováček

Přihlášen: 18.lis.2017
Lokalita: Slovensko
Používám:
AutoCAD 2018
Stav: Offline
Bodů: 6
Přímý odkaz na tuto zprávu Zasláno: 19.lis.2017 v 20:38
Je to super ;) mám iba ešte jednu malú prosbu, nevyznám sa vám totižto do toho kódu (to asi do žiadneho) takže neviem čo prepísať.

Keď zadávam záporný počet štvorcov (čiže vykresluje dovnútra toho prvého štvorca), tak tá minimálna hodnota trochu nesedí s realitou.

Príklad: zadám začiatočný bod, zadám polomer prvého štvorca (povedzme 2)


Připojené náhledyPřihlaste se pro zobrazení plné verze - 80974/1.jpg

,

 a píše mi, že najmenšia možná hodnota je -2).


Připojené náhledyPřihlaste se pro zobrazení plné verze - 80974/2.jpg


To znamená že by malo vykresliť ešte jeden štvorec do vnútra (čiže jeho polomer by bol 1).

Připojené náhledyPřihlaste se pro zobrazení plné verze - 80974/4.jpg


Ale nič sa nevykreslí. Dala by sa ešte táto chybička opraviť, aby vytvorilo to čo na poslednom screen-e ? O:-) Veľmi pekne ďakujem za Váš čas.





Zpět nahoru
johny Zobrazit panel
TOP uživatel
TOP uživatel

Přihlášen: 24.led.2006
Lokalita: ČR (JM)
Používám:
C3D 2022
Stav: Offline
Bodů: 1671
Přímý odkaz na tuto zprávu Zasláno: 20.lis.2017 v 09:19
Ou, pravdaže. Zkuste to takto.

(vl-load-com)

(defun c:Squares ( / *error* adoc pnt rad clr n i cmd 1+-)

  (defun *error* (msg)
    (if (not (wcmatch msg "Function cancelled,quit / exit abort,console break,end"))
      (princ (strcat "\nError: " msg)))
    (if cmd (setvar 'CMDECHO cmd))
    (vla-endundomark adoc)
    (princ))

  (vla-endundomark (setq adoc (vla-get-activedocument (vlax-get-acad-object))))
  (vla-startundomark adoc)
  
  (if (and (setq pnt (getpoint "\nSpecify centre of square: "))
   (not (initget (+ 2 3)))
   (setq rad (getdist "\nSpecify initial radius: "))
   (not (initget 2))
   (setq n (getdist (strcat "\nSpecify number of steps (min: -" (itoa (fix rad)) "): ")))
   (or (>= (+ rad n) 0)
       (prompt "\nError: Number of decreasing steps leads radius below zero!"))
   (setq 1+- (if (minusp n) 1- 1+)
n (abs n) 
i 0
clr 1
cmd (getvar 'CMDECHO))
   (setvar 'CMDECHO 0)
   )
    (while (<= (setq i (1+ i)) n)
      (command "_.POLYGON" 4 "_non" pnt "_C" rad
       "_.CHPROP" "_L" "" "_C" (setq clr (if (= clr 251) 11 (+ clr 10))) "")
      (setq rad (1+- rad))))
  (*error* "end")
)
Zpět nahoru
arcHI4 Zobrazit panel
Nováček
Nováček

Přihlášen: 18.lis.2017
Lokalita: Slovensko
Používám:
AutoCAD 2018
Stav: Offline
Bodů: 6
Přímý odkaz na tuto zprávu Zasláno: 20.lis.2017 v 09:33
Je to super Thumbs Up   Vďaka
Zpět nahoru
arcHI4 Zobrazit panel
Nováček
Nováček

Přihlášen: 18.lis.2017
Lokalita: Slovensko
Používám:
AutoCAD 2018
Stav: Offline
Bodů: 6
Přímý odkaz na tuto zprávu Zasláno: 23.lis.2017 v 11:50
Viem, že to bude znieť dosť otravne, ale vedeli by ste/mali by ste čas ten kód iba stručne vysvetliť ? čo ktorý riadok iba tak dvojslovne znamená ? Confused
Zpět nahoru
johny Zobrazit panel
TOP uživatel
TOP uživatel

Přihlášen: 24.led.2006
Lokalita: ČR (JM)
Používám:
C3D 2022
Stav: Offline
Bodů: 1671
Přímý odkaz na tuto zprávu Zasláno: 23.lis.2017 v 14:41
Snad takto, snad to pomůže

Zpět nahoru

Pro technickou podporu CAD
kontaktujte Helpdesk

Příbuzné CAD tipy:
Tip 7307:Jak vložit obrázek AutoLISP makrem?
Tip 10455:Jak v AutoCADu nakreslit obdélník zadaný středem?
Tip 9995:AutoCAD 2015 vypisuje chybu "VVC: internal error"
Tip 2523:Jak vyvolat dialogovou verzi příkazu z makra?
Tip 1671:Nevýznamné desetinné nuly se nezobrazí funkcí (rtos).
Tip 1364:Jak zakódovat LSP program aby jej nebylo možné editovat?


 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 1,133 sekund.