Použití Constraints v Dynamických blocích – 3.díl - výpočet ohybových momentů

Kategorie » téma: AutoCAD

23.04.2009 23.29 | Jan Panoch | Komentáře: 0 komentářů | Přečteno: 9793x

V předchozích dvou dílech jsme spočítali a vykreslili posouvací síly a reakce v podporách. Nyní zbývá zjistit vzdálenosti od podpory A (x), kde jsou posouvací síly nulové a tedy maximální ohybový moment (Mmax).

Průřez, kde jsou posouvací síly nulové a ohybový moment maximální může být umístěn buď

  • a) mezi podporou A a osamělým břemenem
  • b) v místě osamělého břemene
  • c) mezi osamělým břemenem a podporou B
Pro případ a) platí
x = RA/q
Mmax = RA*x-q*x^2/2
po dosazení
Mmax1 = RA^2/q-RA^2/(2*q)

Pro případ b) platí
x = y
Mmax = RA*x-q*x^2/2
po dosazení
Mmax2 = RA*y-q*y^2/2

Pro případ c) platí
x = (RA-F)/q
Mmax = RA*x-F*(x-y)-q*x^2/2
po dosazení
Mmax3 = (RA^2-F*RA)/q-(F*RA-F^2)/q+F*ym-(q*((RA-F)/q)^2)/2

V constraints se bohužel nedají používat rozhodovací procedury typu If Then Else nebo Select Case. Proto přidáme do Parameters Manageru tři další parametry Mmax1, Mmax2 a Mmax3.
Všechny tři momenty pak můžeme s vysvětlením vypsat do atributů. Postupujeme stejně jako v předchozí části, kde jsme vypisovali hodnoty posouvacích sil. Platný maximální moment je samozřejmě vždy jen jeden. Zbylé dva monety jsou vždy neplatné.
Výkres s blokem je možné uložit a z bloku si vytvořit nástroj na vhodné tool paletě. Budeme mít tak nosník rychle k dispozici.


Jak již bylo zmíněno, Do parametrů se nedají vložit rozhodovací procedury. Jestliže chceme, aby se vypisoval jen jeden maximální moment musíme toto rozhodování přesunout mimo Parameters Manager. Řešením může být použití Visual LISPu.
V pravém sloupci je ukázka nové funkce nazvané zde jako momet. Po zavolání funkce moment budeme dotázáni na výběr bloku. Po vybrání námi definovaného bloku si funkce nejprve načte ty parametry, které potřebuje k rozhodnutí o tom, kde je posouvací síla nulová (první funkce cond). Druhý cond slouží již k samotnému rozhodnutí o maximálním momentu.
Řádek

(command "updatefield" (vlax-vla-object->ename block)) provede aktualizaci automatických polí.

I proměnné LISPu mohou vystupovat v hodnotách automatických polí. Místo původně definovaných třech atributů Mmax1 až Mmax3 si nyní můžeme tyto atributy nahradit jedním Mmax. Defaultní hodnota atributu bude vypadat následovně:

Mmax = UserVariable kNm

UserVariable bude tentokrát automatické pole kde

Field Category = Other

Field Names = LispVariable

Lisp variable = mmax

(defun c:moment ( / RA q ym F Mmax1 Mmax2 Mmax3)
(vl-load-com)
(setq block (vlax-ename->vla-object (car (entsel "\nVyberte blok")))
dblockprops (vlax-safearray->list
(vlax-variant-value
(vla-GetDynamicBlockProperties block)
)
)
nofprops (length dblockprops)
)
(repeat nofprops
(setq dblockproperty (car dblockprops)
propname (vla-get-propertyname dblockproperty)
dblockprops (cdr dblockprops)
)
(cond ((= propname "RA")
(setq RA (vlax-variant-value (vla-get-value dblockproperty))
)
)
((= propname "q")
(setq q (vlax-variant-value (vla-get-value dblockproperty))
)
)
((= propname "ym")
(setq ym (vlax-variant-value (vla-get-value dblockproperty))
)
)
((= propname "F")
(setq F (vlax-variant-value (vla-get-value dblockproperty))
)
)
((= propname "Mmax1")
(setq Mmax1 (vlax-variant-value (vla-get-value dblockproperty))
)
)
((= propname "Mmax2")
(setq Mmax2 (vlax-variant-value (vla-get-value dblockproperty))
)
)
((= propname "Mmax3")
(setq Mmax3 (vlax-variant-value (vla-get-value dblockproperty))
)
)
)
)
(cond ((< (- RA (* q ym)) 0)
(setq Mmax Mmax1)
)
((< (- RA F (* q ym)) 0)
(setq Mmax Mmax2)
)
((> (- RA F (* q ym)) 0)
(setq Mmax Mmax3)
)
)
(vla-update block)

(command "_updatefield" (vlax-vla-object->ename block)) (princ)
)

Jan Panoch

Komentáře:

Tento článek zatím neobsahuje žádné komentáře.

Přidat komentář

 *
 *
 
 *

*) Povinné položky jsou označeny hvězdičkou.