C
Chip115
Всем привет! Поставили задачу написать программу на языке autolisp, которая будет определять площадь поверхности 3D объекта. В качестве объекта я условно взял куб (то, что первое в голову пришло). Так как с лиспом абсолютно не знаком,то конечно же столкнулся с трудностями. В общем, помогите начать. Даже не знаю с какой стороны подходить к решению этой проблемы. Ознакомился с синтаксисом, написал простенькие программы. Вроде проникся темой.
Я нашел функцию, которая возвращает параметры нарисованного объекта. Вот что получилось
Это была просто линия. С параметрами я разобрался.
Вот думаю, можно ли юзая эту функцию вычислить координаты ребер куба, а потом вычислить площадь - дело техники?
Короче, сказано - сделано. Нарисовал куб со сторонами 10х10х10. Ввел команду и вот что получил.
Ад. Кажется иду не тем путем. Не подскажите, как более рационально решить задачу?
Я нашел функцию, которая возвращает параметры нарисованного объекта. Вот что получилось
Код:
(setq myline (entget (entlast)))
((-1 . <Имя объекта: 7ef03568>) (0 . "LINE") (330 . <Имя объекта: 7ef01cf8>) (5
. "225") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "0") (100 .
"AcDbLine") (10 1816.85 1127.13 0.0) (11 4263.73 1486.39 0.0) (210 0.0 0.0 1.0))
Вот думаю, можно ли юзая эту функцию вычислить координаты ребер куба, а потом вычислить площадь - дело техники?
Короче, сказано - сделано. Нарисовал куб со сторонами 10х10х10. Ввел команду и вот что получил.
Код:
(setq myobj(entget (entlast)))
((-1 . <Имя объекта: 7ef035f0>) (0 . "3DSOLID") (330 . <Имя объекта: 7ef01cf8>)
(5 . "236") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "0") (100 .
"AcDbModelerGeometry") (70 . 1) (1 . "mnjoo nnj m mk ") (1 . "ni
^*+0;:,4 ^*+0\\^[ nf ^LR mnhqoqoqkjol QK o ") (1 . "n fqfffffffffffffffj:rooh
n:rono ") (1 . ">,27:>;:- {rn rn _nm mnhqoqoqkjol |") (1 . "=0;& {m rn {rn {l
{rn {rn |") (1 . "-:9@)+r:&:r>++-6= {rn rn {rn {rn {n {k {j |") (1 . "3*2/ {i
rn {rn {rn {h {n |") (3 . ":&:@-:961:2:1+ {rn rn _j 8-6; n _l +-6 n _k ,*-9 o
_l >;5 o _k 8->; o _f /0,+<7:<4 o _k <>3< n _k <01) o _k ,+03
oqolmlkjflfkmhinkmnm _k 1+03 lo _k;,63 o _g 93>+1:,, o _h /6'>-:> o _k 72>' o
_i 8-6;>- o _j 28-6; looo _j *8-6; o _j )8-6; o _no :1;@96:3;,") (1 . " |") (1
. "):-+:'@+:2/3>+: {rn rn l o n g |") (1 . "-:9@)+r:&:r>++-6= {rn rn {rn {rn {l
{k {j |") (1 . ",7:33 {g rn {rn {rn {rn {f {rn {l |") (1 . "-:9@)+r:&:r>++-6=
{rn rn {rn {rn {h {k {j |") (1 . "9><: {no rn {rn {nn {nm {h {rn {nl 90-(>-;
,6183: |") (1 . "92:,7r:&:r>++-6= {rn rn {nk {rn {f |") (1 . "9><: {nj rn {rn
{ni {nh {h {rn {ng -:-,:; ,6183: |") (1 . "300/ {rn rn {rn {rn {nf {f |") (1
. "/3>1:r,*-9><: {rn rn {rn jqklmlmjinlnkjmmk jqoooooooooooooojl
roqilijnjfgljohjjoml o o n n o o 90-(>-;@) V V V V |") (1 . "-:9@)+r:&:r>++-6=
{rn rn {rn {no {f {k {j |") (1 . "92:,7r:&:r>++-6= {rn rn {mo {rn {nn |") (1 .
"9><: {mn rn {rn {mm {ml {h {rn {mk -:-,:; ,6183: |") (1 . "300/ {rn rn {rn
{rn {mj {nn |") (1 . "/3>1:r,*-9><: {rn rn {rn jqklmlmjinlnkjmmk
jqoooooooooooooojl rnoqilijnjfgljohjj o o n n o o 90-(>-;@) V V V V |") (1 .
"<0:;8: {rn rn {rn {mi {mh {mg {mf 90-(>-; {nm {rn |") (1 . "-:9@)+r:&:r>++-6=
{rn rn {rn {nj {nn {k {j |") (1 . "92:,7r:&:r>++-6= {rn rn {lo {rn {ni |") (1 .
"9><: {ln rn {rn {lm {ll {h {rn {lk -:-,:; ,6183: |") (1 . "300/ {rn rn {rn
{rn {lj {ni |") (1 . "/3>1:r,*-9><: {rn rn {rn jqklmlmjinlnkjmmk
jqlmfohojngmoohjnk:ronj rjqilijnjfgljohjjom o n o o o n 90-(>-;@) V V V V |")
(1 . "<0:;8: {rn rn {rn {li {lh {lg {lf 90-(>-; {nh {rn |") (1 . "<0:;8: {rn rn
{rn {ko {nf {kn {km 90-(>-; {nm {rn |") (1 . "<0:;8: {rn rn {rn {nf {ko {kl {kk
90-(>-; {nm {rn |") (1 . "<0:;8: {rn rn {rn {kj {ki {nf {mf -:-,:; {kh {rn
|") (1 . ":;8: {kg rn {rn {kf rj {jo j {mg {jn 90-(>-; _h *1410(1 |") (1 .
"-:9@)+r:&:r>++-6= {rn rn {rn {mn {ni {k {j |") (1 . "92:,7r:&:r>++-6= {rn rn
{jm {rn {mm |") (1 . "9><: {jl rn {rn {jk {jj {h {rn {ji -:-,:; ,6183: |") (1
. "300/ {rn rn {rn {rn {jh {mm |") (1 . "/3>1:r,*-9><: {rn rn {rn
oqklmlmjinlnkjmmk jqoooooooooooooojl rjqilijnjfgljohjjom n o o o o rn 90-(>-;@)
V V V V |") (1 . "<0:;8: {rn rn {rn {jg {kl {jf {io 90-(>-; {ml {rn |") (1 .
"<0:;8: {rn rn {rn {in {mj {jg {im 90-(>-; {nh {rn |") (1 . "<0:;8: {rn rn {rn
{mj {in {il {ik 90-(>-; {nh {rn |") (1 . "<0:;8: {rn rn {rn {ki {kj {mj {lf
-:-,:; {kh {rn |") (1 . ":;8: {ij rn {rn {ii rj {ih j {lg {ig 90-(>-; _h
*1410(1 |") (1 . "<0:;8: {rn rn {rn {mh {mi {if {ho 90-(>-; {nm {rn |") (1 .
"<0:;8: {rn rn {rn {hn {hm {mi {km -:-,:; {jj {rn |") (1 . ":;8: {hl rn {rn
{jo rj {hk j {kn {hj 90-(>-; _h *1410(1 |") (1 . "<0:;8: {rn rn {rn {lj {hi {mh
{kk -:-,:; {ml {rn |") (1 . ":;8: {hh rn {rn {hg rj {kf j {kl {hf 90-(>-; _h
*1410(1 |") (1 . "<0:;8: {rn rn {rn {lg {mg {hi {go 90-(>-; {kh {rn |") (1 .
"<0:;8: {rn rn {rn {mg {lg {hn {gn -:-,:; {kh {rn |") (1 . "300/ {rn rn {rn
{rn {kj {jk |") (1 . "/+36,+r:&:r>++-6= {rn rn {rn {rn {mf |") (1 . "):-+:' {rn
rn {rn {mf o {gm |") (1 . "):-+:' {rn rn {rn {mf n {gl |") (1 . ",+->687+r<*-):
{rn rn {rn noqklmlmjinlnkjmmk jqoooooooooooooojl roqilijnjfgljohjjoml o n o V V
|") (1 . "-:9@)+r:&:r>++-6= {rn rn {rn {ln {mm {k {j |") (1 . "92:,7r:&:r>++-6=
{rn rn {gk {rn {lm |") (1 . "9><: {gj rn {rn {rn {kh {h {rn {gi -:-,:; ,6183:
|") (1 . "300/ {rn rn {rn {rn {hn {lm |") (1 . "/3>1:r,*-9><: {rn rn {rn
jqklmlmjinlnkjmmk noqooooooooooooooj rjqilijnjfgljohjjom o rn o o o rn
90-(>-;@) V V V V |") (1 . "<0:;8: {rn rn {rn {gh {if {hm {gg 90-(>-; {ll {rn
|") (1 . "<0:;8: {rn rn {rn {hi {lj {li {im -:-,:; {ml {rn |") (1 . "<0:;8:
{rn rn {rn {if {gh {lj {io
-:-,:; {ll {rn |") (1 . ":;8: {gf rn {rn {hg rj {fo j {jf {fn 90-(>-; _h
*1410(1 |") (1 . "<0:;8: {rn rn {rn {lh {li {gh {fm 90-(>-; {nh {rn |") (1 .
":;8: {fl rn {rn {ih rj {fo j {jg {fk 90-(>-; _h *1410(1 |") (1 . "<0:;8: {rn
rn {rn {hm {hn {lh {ik -:-,:; {jj {rn |") (1 . ":;8: {fj rn {rn {fi rj {ii j
{il {fh 90-(>-; _h *1410(1 |") (1 . "/+36,+r:&:r>++-6= {rn rn {rn {rn {lf |")
(1 . "):-+:' {rn rn {rn {lf o {fg |") (1 . "):-+:' {rn rn {rn {go n {ff |") (1
. ",+->687+r<*-): {rn rn {rn noqklmlmjinlnkjmmk jqoooooooooooooojl
rnoqilijnjfgljohjj o rn o V V |") (1 . "<0:;8: {rn rn {rn {jh {jf {ko {ho
-:-,:; {ll {rn |") (1 . ":;8: {noo rn {rn {hk rj {hg j {if {non 90-(>-; _h
*1410(1 |") (1 . "<0:;8: {rn rn {rn {il {kn {ki {gn 90-(>-; {jj {rn |") (1 .
"<0:;8: {rn rn {rn {kn {il {jh {gg -:-,:; {jj {rn |") (1 . "/+36,+r:&:r>++-6=
{rn rn {rn {rn {km |") (1 . "):-+:' {rn rn {rn {km n {nom |") (1 .
",+->687+r<*-): {rn rn {rn jqklmlmjinlnkjmmk noqooooooooooooooj
roqilijnjfgljohjjoml rn o o V V |") (1 . "<0:;8: {rn rn {rn {kl {jg {kj {go
-:-,:; {ml {rn |") (1 . "/+36,+r:&:r>++-6= {rn rn {rn {rn {kk |") (1 .
"):-+:' {rn rn {rn {ho n {nol |") (1 . ",+->687+r<*-): {rn rn {rn
jqklmlmjinlnkjmmk jqlmfohojngmoohjnk:ronj roqilijnjfgljohjjoml n o o V V |") (1
. ":;8: {nok rn {rn {kf rj {ih j {kj {noj 90-(>-; _h *1410(1 |") (1 . ":;8:
{noi rn {rn {jo rj {ii j {ki {noh 90-(>-; _h *1410(1 |") (1 . "/061+ {rn rn {rn
noqklmlmjinlnkjmmk jqlmfohojngmoohjnk:ronj roqilijnjfgljohjjoml |") (1 . "/061+
{rn rn {rn noqklmlmjinlnkjmmk noqooooooooooooooj roqilijnjfgljohjjoml |") (1 .
"-:9@)+r:&:r>++-6= {rn rn {rn {jl {lm {k {j |") (1 . "92:,7r:&:r>++-6= {rn rn
{nog {rn {jk |") (1 . "/3>1:r,*-9><: {rn rn {rn noqklmlmjinlnkjmmk
jqoooooooooooooojl rjqilijnjfgljohjjom rn o o o o n 90-(>-;@) V V V V |") (1 .
"<0:;8: {rn rn {rn {jf {jh {in {fm -:-,:; {ll {rn |") (1 . ":;8: {nof rn {rn
{hk rj {fi j {hm {nno 90-(>-; _h *1410(1 |") (1 . "/+36,+r:&:r>++-6= {rn rn {rn
{rn {io |") (1 . "):-+:' {rn rn {rn {fm o {nnn |") (1 . ",+->687+r<*-): {rn rn
{rn oqklmlmjinlnkjmmk jqlmfohojngmoohjnk:ronj rjqilijnjfgljohjjom o o rn V V
|") (1 . ":;8: {nnm rn {rn {fo rj {fi j {gh {nnl 90-(>-; _h *1410(1 |") (1 .
"/+36,+r:&:r>++-6= {rn rn {rn {rn {im |") (1 . ",+->687+r<*-): {rn rn {rn
jqklmlmjinlnkjmmk jqlmfohojngmoohjnk:ronj rnoqilijnjfgljohjj rn o o V V |") (1
. "/+36,+r:&:r>++-6= {rn rn {rn {rn {ik |") (1 . "):-+:' {rn rn {rn {ik o {nnk
|") (1 . ",+->687+r<*-): {rn rn {rn jqklmlmjinlnkjmmk noqooooooooooooooj
rnoqilijnjfgljohjj n o o V V |") (1 . "/061+ {rn rn {rn noqklmlmjinlnkjmmk
noqooooooooooooooj rnoqilijnjfgljohjj |") (1 . "/061+ {rn rn {rn
noqklmlmjinlnkjmmk jqlmfohojngmoohjnk:ronj rnoqilijnjfgljohjj |") (1 .
"/+36,+r:&:r>++-6= {rn rn {rn {rn {ho |") (1 . ",+->687+r<*-): {rn rn {rn
oqklmlmjinlnkjmmk jqoooooooooooooojl roqilijnjfgljohjjoml o rn o V V |") (1 .
"/061+ {rn rn {rn oqklmlmjinlnkjmmk noqooooooooooooooj roqilijnjfgljohjjoml |")
(1 . "/061+ {rn rn {rn oqklmlmjinlnkjmmk jqlmfohojngmoohjnk:ronj
roqilijnjfgljohjjoml |") (1 . "/+36,+r:&:r>++-6= {rn rn {rn {rn {go |") (1 .
",+->687+r<*-): {rn rn {rn noqklmlmjinlnkjmmk jqlmfohojngmoohjnk:ronj
rjqilijnjfgljohjjom o o rn V V |") (1 . "/+36,+r:&:r>++-6= {rn rn {rn {rn {gn
|") (1 . ",+->687+r<*-): {rn rn {rn noqklmlmjinlnkjmmk noqooooooooooooooj
rjqilijnjfgljohjjom o o rn V V |") (1 . "-:9@)+r:&:r>++-6= {rn rn {rn {gj {jk
{k {j |") (1 . "/+36,+r:&:r>++-6= {rn rn {rn {rn {gg |") (1 . ",+->687+r<*-):
{rn rn {rn oqklmlmjinlnkjmmk noqooooooooooooooj rjqilijnjfgljohjjom o o rn V V
|") (1 . "/061+ {rn rn {rn oqklmlmjinlnkjmmk jqlmfohojngmoohjnk:ronj
rnoqilijnjfgljohjj |") (1 . "/+36,+r:&:r>++-6= {rn rn {rn {rn {fm |") (1 .
",+->687+r<*-): {rn rn {rn oqklmlmjinlnkjmmk jqoooooooooooooojl
rnoqilijnjfgljohjj o n o V V |") (1 . "/061+ {rn rn {rn oqklmlmjinlnkjmmk
noqooooooooooooooj rnoqilijnjfgljohjj |") (100 . "AcDb3dSolid") (350 . <Имя
объекта: 7ef03608>))
Ад. Кажется иду не тем путем. Не подскажите, как более рационально решить задачу?