Commit a196b5f5 authored by Dave Cooper's avatar Dave Cooper
Browse files

Merge branch 'release-1583' of file:///Volumes/UDISK/gendl

parents 2f06444c ce9905cb
# Lines starting with '#' are considered comments.
# Ignore any file named foo.txt.
*.fasl
*.fas
*.xfasl
*.dx64fsl
*.lib
bin
*~
#*#
......
......@@ -25,7 +25,7 @@ NOTE:
This is the original Robot example and uses the old-style user
interface approach. It is not recommended to continue with this
approach; the preferred approach is to use form-control objects for
approach; the preferred approach is to use form-control objects for
the form fields, as will be in other newer examples soon to be added
to the src/ directory distributed with GDL.
......
(in-package :gdl-user)
(define-object robot-drawing (base-drawing)
:hidden-objects ((robot-assembly :type 'robot:assembly)
(text-block :type 'robot-text-block
......@@ -17,7 +17,7 @@
:objects
((text-view :type 'base-view
((text-view :type 'base-view
;;:left-margin 0
;;:front-margin 0
:border-box? t
......@@ -26,7 +26,7 @@
:width (half (the width))
:projection-vector (getf *standard-views* :top)
:center (translate (the center) :rear (half (the-child length))
:right (half (the-child width))))
:right (half (the-child width))))
(tri-view :type 'base-view
:border-box? t
......@@ -98,6 +98,7 @@
(tt:vspace 100)
(tt:paragraph () "Robot Data")
(let ((width (- (the width) (the margins))))
(tt:table (:col-widths (list (* 2/3 width) (* 1/3 width)))
(dolist (slot (list :robot-width :robot-length :body-angle :arm-angle-left :head-angle))
......
......@@ -16,7 +16,7 @@
;; 2. WHERE ARE WE?
(defvar *gdl-home* (file-truename (concat (file-name-directory (file-truename load-file-name)) "../")))
(defvar *gendl-home* (file-truename (concat (file-name-directory (file-truename load-file-name)) "../")))
;; 3. CONFGURGE EMACS
......@@ -39,10 +39,11 @@
;; 3.2. Set up color-theme and solarized color-themes
(add-to-list 'load-path (concat *gdl-home* "emacs/emacs-color-theme"))
(add-to-list 'load-path (concat *gendl-home* "emacs/emacs-color-theme"))
(require 'color-theme)
(color-theme-initialize)
(color-theme-sitaramv-solaris)
;;(color-theme-sitaramv-solaris)
(color-theme-feng-shui)
;; 3.3. Indents
......@@ -100,8 +101,14 @@
;;
;; 4.1. Some synonyms
(defun gendl () (interactive) (with-temp-buffer (cd *gdl-home*) (slime)))
(defun gendl () (interactive)
(add-hook 'slime-connected-hook 'load-and-or-start-gendl t)
(add-to-list 'auto-mode-alist '("\\.cl\\'" . lisp-mode))
(add-to-list 'auto-mode-alist '("\\.gdl\\'" . lisp-mode))
(add-to-list 'auto-mode-alist '("\\.gendl\\'" . lisp-mode))
(with-temp-buffer (cd *gendl-home*) (slime)))
(defun gdl () (interactive) (gendl))
(defun glime () (interactive) (gendl))
(defun gdl-quit () (interactive) (slime-quit-lisp))
(defun gq () (interactive) (gdl-quit))
......@@ -111,19 +118,30 @@
;; 4.2. Locate Common Lisp / Locate SLIME
;;
;; Where is our Common Lisp implementation? Where is slime-helper.el?
;;
;; If you don't have slime loaded yet, and/or you don't have
;; slime-lisp-implementations set, then please make a file
;; .configure-glime.el in your home directory which sets
;; correct slime-lisp-implementations and path-to-quicklisp-helper
;;
;; Loading the latter means we can load slime-autoloads.el (which
;; enables SLIME itself).
;;
;;
(defun configure-slime ()
(setq lisp-invocation nil)
(setq path-to-quicklisp-helper nil)
(let ((config-file (concat *gdl-home* "configure.el")))
(when (file-exists-p config-file)
;; Loading this file sets lisp-invocation and path-to-quicklisp-helper
(load-file config-file))
(when lisp-invocation
(setq slime-lisp-implementations `((gendl ,lisp-invocation))))
(load-file path-to-quicklisp-helper)))
(let ((built-in-config (concat *gendl-home* "emacs/configure-glime.el"))
(home-config "~/.configure-glime.el"))
(let ((config-file (if (file-exists-p built-in-config) built-in-config home-config)))
(when (file-exists-p config-file) (load-file config-file))
;;
;; path-to-quicklisp-helper should have been set by config-file,
;; or slime must already be set up.
;;
(when (file-exists-p quicklisp-slime-helper)
(load-file quicklisp-slime-helper)))))
(configure-slime)
(require 'slime-autoloads)
......@@ -134,17 +152,23 @@
(eval-after-load "slime"
'(progn
(slime-setup '(slime-fancy slime-banner))
(add-hook 'slime-connected-hook 'load-gendl t)
(add-hook 'slime-connected-hook 'set-slime-shortcuts)
(add-hook 'slime-connected-hook 'customise-slime)
(add-hook 'slime-repl-mode-hook 'remove-dos-eol)
(add-to-list 'auto-mode-alist '("\\.cl\\'" . lisp-mode))
(add-to-list 'auto-mode-alist '("\\.gdl\\'" . lisp-mode))
(add-to-list 'auto-mode-alist '("\\.gendl\\'" . lisp-mode))))
(add-hook 'slime-connected-hook 'load-user-emacs-glime)))
(defun load-gendl ()
(defun load-and-or-start-gendl ()
(slime-repl)
(insert (format "(load \"%sload-gendl.lisp\")" *gdl-home*))
(insert "(unless (find-package :gendl) (load (merge-pathnames \".load-gendl.lisp\" (user-homedir-pathname))))")
(slime-repl-return)
(insert (format "(load (compile-file \"%s/emacs/glime.lisp\"))" *gendl-home*))
(slime-repl-return)
(insert "(gendl:start-gendl!)")
(slime-repl-return)
(insert (format "(format nil \"Also contains ~a, and Quicklisp libraries from:
%s.
Thank You to their respective authors and maintainers.\" (lisp-implementation-type))" (concat *gendl-home* "quicklisp/")))
(slime-repl-return)
(insert "(in-package gdl-user)")
(slime-repl-return)
(end-of-buffer))
......@@ -167,24 +191,25 @@
;; 4.4. Prior to SLIME
(defun prior-to-slime ()
(find-file (concat *gdl-home* "emacs/README.txt"))
(defun prior-to-glime ()
(find-file (concat *gendl-home* "emacs/README.txt"))
(toggle-read-only)
(let ((frame-title "Genworks® Gendl™ Interactive Authoring Environment"))
(modify-frame-parameters nil
(list (cons 'name frame-title))))
(message "Please see the Startup section of this document for starting the Gendl environment.")
(when (file-exists-p "~/.emacs-gendl")
(load-file "~/.emacs-gendl"))
(modify-frame-parameters nil (list (cons 'name frame-title))))
(setq inhibit-splash-screen t)
(cd "~/")
(set-frame-parameter nil 'fullscreen 'maximized))
(defun load-user-emacs-glime ()
(when (file-exists-p "~/.emacs-glime") (load-file "~/.emacs-glime"))
(when (file-exists-p "~/.emacs-glime.el") (load-file "~/.emacs-glime.el")))
;; 5. MAKE IT HAPPEN
(prior-to-slime)
(slime)
(prior-to-glime)
(glime)
;; A. REFERENCES
......
1. Reference-chains entered into Slime REPL throw an "error in process
filter" e.g.:
1. Reference-chains (with "the" or "the-object") entered into Slime
REPL (or anywhere else outside of a define-object context) should
still provide an enriched-decoded-arglist in the mini-buffer, iff
the global gdl:self is bound (which it typically will be, if
someone is typing reference chains at Slime REPL).
GDL-USER>
;; Error: Odd length keyword list: (SWANK::%CURSOR-MARKER%)
;; Error: Odd length keyword list: (SWANK::%CURSOR-MARKER%)
;; Error: Odd length keyword list: (SWANK::%CURSOR-MARKER%)
; No value
GDL-USER> (the foo ...
In that case, the global gdl:self should be the starting class for
any reference chains.
This is fixed temporarily with an ignore-errors around body of
this-the-from-form in emacs/glime.lisp genworks' current
slime-devel branch. Ignore-errors should probably still be there
just to catch any unforeseen situations, but probably with a
multiple-value-bind to catch the error and handle it somehow or at
least print a warning message about it.
example:
GDL-USER> (make-self 'robot-drawing)
#<ROBOT-DRAWING #x302004739C4D>
GDL-USER> (the
Now the mini-buffer should show completions of "(the ..." based
on the fact that self is an instance of robot-drawing.
N.B. self is not declared special in Gendl currently. It probably
should be, but I am not sure what would be the ramifications of
doing this. Needs to be investigated (on my end). For now it
should be left as-is and not declared special with defparameter or
defvar.
2. Within the-child and the-object, glime was incorrectly picking up
the messages-in-this-form as well as the messages from the :type of
the current child object. This has been fixed for now by binding
*message-locators* to simply '(messages-from-classes) in
compute-enriched-decoded-arglist for the-object and the-child. I'm
not sure if this is the best way to go about this, because there is
another case where messages-in-this-form should not be included
(see (3) below).
2. the-child is not picking up the type of current child -- it still
appears to be working based off the enclosing define-object type.
3. In reference-chains after the first message, i.e.
3. When placing the "(" after "(the (" it does toggle to display
available GDL Functions, but it should also suppress display of
non-Function slots, and it does not appear to be doing this.
(the foo ...)
it is still picking up messages-in-this-form. At that point it
should only be picking up messages-from-classes for the class-of
(the foo) [if any].
4. Sequence (quantified) objects are still showing up for "(the ..."
and they should only show up for "(the (..." [i.e. they should
behave like Functions]
example:
(define-object frob ()
:objects ((baz :type 'box
:sequence (:size 10))))
;; compile above form. Now do
(make-self 'frob)
(the ...
4. slime-autodoc-use-multiline-p does not appear to be activated.
Typing "(the ..." should not include baz
5. Sequence (quantified) objects are not behaving like GDL Functions
for "(the (" as they should.
Typing "(the (..." _should_ include baz.
6. Reference-chains do not appear to pick up the inferred type of each
element along the chain, as theoretically should (at least
sometimes) be possible, using e.g. (the (slot-source ...)) and
pulling out the :type for messages which name :objects
or :hidden-objects.
7. Functions-in-this-form (which are not compiled into object yet) are
not being picked up.
8. a. "(the-object foo (evaluate ... " should work identically to
5. a. "(the-object foo (evaluate ... " should work identically to
"(the-object foo ..." except symbols should show up as keywords.
b. "(the-object foo ((evaluate ... " should work identically to
......
......@@ -432,11 +432,13 @@ each returning a list of proposed messages.")
(defmethod compute-enriched-decoded-arglist ((operator (eql 'gendl:the-object)) arguments)
(declare (ignorable arguments))
(or (embedded-the-arglist) (call-next-method)))
(let ((*message-locators* '(messages-from-classes)))
(or (embedded-the-arglist) (call-next-method))))
(defmethod compute-enriched-decoded-arglist ((operator (eql 'gendl:the-child)) arguments)
(declare (ignorable arguments))
(or (embedded-the-arglist) (call-next-method)))
(let ((*message-locators* '(messages-from-classes)))
(or (embedded-the-arglist) (call-next-method))))
(defvar *this-the*)
......@@ -446,6 +448,7 @@ each returning a list of proposed messages.")
;; The gend:the form isn't embedded inside a define-object. Bail out.
(return-from embedded-the-arglist
nil))))
(when-let (messages (when (and (consp whole-form)
(eq (car whole-form) 'gendl:define-object))
(remove-duplicates (loop for locator in *message-locators* append
......@@ -463,11 +466,11 @@ each returning a list of proposed messages.")
;; 9.1. Analyse the current gendl:the form
(defstruct (this-the
(:constructor make-this-the (section slot-form the-form
&aux
(functionp (when (consp the-form)
(the-form-functionp (cdr the-form))))
(quantifiedp (quantified-objects-p section slot-form the-form)))))
(:constructor make-this-the (section slot-form the-form
&aux
(functionp (when (consp the-form)
(the-form-functionp (cdr the-form))))
(quantifiedp (quantified-objects-p section slot-form the-form)))))
section
slot-form
the-form
......@@ -571,18 +574,25 @@ gendl:the (etc) form under construction."
;; 9.3. Messages which we can deduce from mixin classes.
(defparameter *messages-to-suppress*
(list :aggregate :all-mixins :children-uncached :direct-mixins :documentation
:hidden? :leaves-uncached :message-documentation :message-list :mixins :name-for-display
:restore-all-defaults! :restore-tree! :root :root-path-local :root? :safe-children
:safe-hidden-children :slot-documentation :slot-source :slot-status :update! :visible-children
:write-snapshot))
(list
;; from vanilla-mixin*:
:aggregate :all-mixins :children-uncached :direct-mixins :documentation
:hidden? :leaves-uncached :message-documentation :message-list :mixins :name-for-display
:restore-all-defaults! :restore-tree! :root :root-path-local :root? :safe-children
:safe-hidden-children :slot-documentation :slot-source :slot-status :update! :visible-children
:write-snapshot
;; from base-object:
:image-file :local-bbox :local-box :local-center :local-center*
:local-orientation :obliqueness
))
(defparameter *messages-to-suppress-when-not-sequence-member*
(list :first? :index :last?))
(list :first? :index :last? :next :previous))
(defun messages-from-classes (form)
(defun messages-from-classes* (classes)
"Use message-list to find out what the messages might be."
(let* ((starting-classes (starting-classes form))
(let* ((starting-classes classes)
(mixins (remove-duplicates (append (mapcar 'class-name starting-classes)
(loop for class in starting-classes append
(gendl:the-object (gendl-class-prototype class) all-mixins)))
......@@ -592,6 +602,12 @@ gendl:the (etc) form under construction."
'string<)))))
(filter-sequence-messages messages)))
(defun messages-from-classes (form)
"Use message-list to find out what the messages might be."
(let ((starting-classes (starting-classes form)))
(messages-from-classes* starting-classes)))
(defun starting-classes (form)
(destructuring-bind (classname &optional mixins &rest keywords)
(cdr form)
......@@ -602,10 +618,10 @@ gendl:the (etc) form under construction."
;; It's a either a (the-child ...) class , or a redefinition
;; (which includes: clicking on an existing defintion).
(the-reference-chain this-class)
;; New definition. Hit the superclasses.
(loop for classname in mixins
for class = (safe-find-class classname)
when class collect class)))))
;; New definition. Hit the superclasses.
(loop for classname in mixins
for class = (safe-find-class classname)
when class collect class)))))
;; If we're in a the-child inside an :objects or :hidden-objects clause and can find
;; a class for the :type, return that.
......@@ -699,6 +715,7 @@ in one of the *internal-packages*), otherwise filter for non-nil message-remarks
collect message)))))
(defun filter-sequence-messages (messages)
(if (and (boundp '*this-the*)
(this-the-quantifiedp *this-the*))
messages
......
......@@ -8,7 +8,16 @@
#+asdf-utf-8 :encoding #+asdf-utf-8 :utf-8
:version "2013031600"
:depends-on (:cl-lite :gwl-graphics :tasty :robot :yadd)
:components (#+:swank (:file "emacs/glime")))
;;
;; Leaving this out because we can't deal with swank package in the
;; monofasl which is to be loaded without swank. When/if we figure
;; out how to have swank already loaded into pre-built images, we
;; can have swank as one of the first dependencies, and put this
;; back.
;;
;;:components (#+:swank (:file "emacs/glime"))
)
(in-package :common-lisp-user)
(let ((personal-boot-file "../gdl/tools/boot/load.lisp"))
(when (probe-file personal-boot-file) (load personal-boot-file)))
(funcall (find-symbol (string '#:quickload) :ql) :gendl)
(gendl:start-gendl!)
(((#(-7.773502691896258 10.0 0.0)
#(-7.75720302109858 10.0 0.005508906204967898)
#(-7.740130238567397 10.0 0.007512531990573305)
#(-7.723312660735872 10.0 0.009389084110142337)
#(-7.706495082904348 10.0 0.011265636229711369)
#(-7.689662754827711 10.0 0.013486086190146098)
#(-7.672694174163594 10.0 0.015888459487970942)
#(-7.6387570128353595 10.000000000000002 0.02069320608362063)
#(-7.60535478715376 9.999999999999998 0.024745818150224655)
#(-7.571692358735774 10.0 0.028819280178703853)
#(-7.538029930317788 10.000000000000002 0.03289274220718305)
#(-7.503937023492169 10.0 0.037150997739690904)
#(-7.470373820070232 10.0 0.041157958289341705)
#(-7.436810616648295 10.0 0.0451649188389925)
#(-7.4029135135808 10.0 0.04903457344418648)
#(-7.3691521962047215 10.0 0.052792854004172156)
#(-7.3016295614525655 10.0 0.06030941512414352)
#(-7.233991372830615 9.999999999999998 0.06740637865926773)
#(-7.166274510818496 10.0 0.07398847749873158)
#(-7.0308407867942595 10.000000000000005 0.08715267517765929)
#(-6.896010988165702 10.000000000000005 0.09839626376145132)
#(-6.760028452245113 10.0 0.10676313680154932)
#(-6.6240459163245236 9.999999999999995 0.11513000984164733)
#(-6.487607929684804 9.999999999999991 0.1206935573045556)
#(-6.352150130318781 10.000000000000002 0.11996020031943386)
#(-6.284421230635768 10.000000000000007 0.119593521826873)
#(-6.216191130813162 10.0 0.11762624591337664)
#(-6.1482720301510465 10.0 0.11302990523476085)
#(-6.080352929488931 10.0 0.10843356455614506)
#(-6.01211538711849 9.999999999999996 0.10151574545044109)
#(-5.94575505783107 10.0 0.08864634663465115)
#(-5.91257489318736 10.000000000000002 0.0822116472267562)
#(-5.879164310479417 10.0 0.07429753386580915)
#(-5.847498958576427 10.0 0.06246782610805402)
#(-5.831666282624932 10.0 0.05655297222917645)
#(-5.815888257757295 10.0 0.04962825637897741)
#(-5.801732155716707 10.0 0.04010167981287849)
#(-5.78757605367612 10.0 0.03057510324677957)
#(-5.773512626579065 10.0 0.016927155414108983)
#(-5.77350372489622 10.0 -5.432357e-10))
(1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
1.0 1.0 1.0 1.0 1.0 1.0)
(0.0 0.0 0.0 0.0 0.025 0.025 0.025 0.05 0.05 0.05 0.1 0.1 0.1
0.15000000000000002 0.15000000000000002 0.15000000000000002 0.2 0.2
0.2 0.3 0.3 0.3 0.5 0.5 0.5 0.7 0.7 0.7 0.8 0.8 0.8 0.9 0.9 0.9 0.95
0.95 0.95 0.975 0.975 0.975 1.0 1.0 1.0 1.0)
3))
\ No newline at end of file
((((#(10.0 0.0 0.0) #(10.0 10.0 0.0) #(6.123031769111886e-16 10.0 0.0)
#(-10.0 10.0 0.0) #(-10.0 1.2246063538223773e-15 0.0)
#(-10.000000000000002 -9.999999999999998 0.0)
#(-1.836909530733566e-15 -10.0 0.0)
#(9.999999999999998 -10.000000000000002 0.0) #(10.0 0.0 0.0))
(1.0 0.7071067811865476 1.0 0.7071067811865476 1.0 0.7071067811865476 1.0
0.7071067811865476 1.0)
(0.0 0.0 0.0 0.25 0.25 0.5 0.5 0.75 0.75 1.0 1.0 1.0) 2)
((#(10.0 0.0 0.0) #(10.0 5.522847498307936 0.0)
#(5.522847498307936 10.0 0.0) #(0.0 10.0 0.0))
(#(0.0 10.0 0.0) #(-5.522847498307936 10.0 0.0)
#(-10.0 5.522847498307936 0.0) #(-10.0 0.0 0.0))
(#(-10.0 0.0 0.0) #(-10.0 -5.522847498307936 0.0)
#(-5.522847498307936 -10.0 0.0) #(0.0 -10.0 0.0))
(#(0.0 -10.0 0.0) #(5.522847498307936 -10.0 0.0)
((((#(10.0 0.0 0.0) #(10.0 10.0 0.0) #(6.123031769111886e-16 10.0 0.0)
#(-10.0 10.0 0.0) #(-10.0 1.2246063538223773e-15 0.0)
#(-10.000000000000002 -9.999999999999998 0.0)
#(-1.836909530733566e-15 -10.0 0.0)
#(9.999999999999998 -10.000000000000002 0.0) #(10.0 0.0 0.0))
(1.0 0.7071067811865476 1.0 0.7071067811865476 1.0
0.7071067811865476 1.0 0.7071067811865476 1.0)
(0.0 0.0 0.0 0.25 0.25 0.5 0.5 0.75 0.75 1.0 1.0 1.0) 2)
((#(10.0 0.0 0.0) #(10.0 5.522847498307936 0.0)
#(5.522847498307936 10.0 0.0) #(0.0 10.0 0.0))
(#(0.0 10.0 0.0) #(-5.522847498307936 10.0 0.0)
#(-10.0 5.522847498307936 0.0) #(-10.0 0.0 0.0))
(#(-10.0 0.0 0.0) #(-10.0 -5.522847498307936 0.0)
#(-5.522847498307936 -10.0 0.0) #(0.0 -10.0 0.0))
(#(0.0 -10.0 0.0) #(5.522847498307936 -10.0 0.0)
#(10.0 -5.522847498307936 0.0) #(10.0 0.0 0.0)))))
\ No newline at end of file
((((#(0.0 0.0 0.0) #(2.0 3.0 0.0) #(4.0 2.0 0.0) #(5.0 0.0 0.0)
#(4.0 -2.0 0.0) #(2.0 -3.0 0.0) #(0.0 0.0 0.0))
(1.0 1.0 1.0 1.0 1.0 1.0 1.0)
(0.0 0.0 0.0 0.0 0.25 0.5 0.75 1.0 1.0 1.0 1.0) 3)
((#(0.0 0.0 0.0) #(2.0 3.0 0.0) #(3.0 2.5 0.0)
#(3.666666666666667 1.9166666666666667 0.0))
(#(3.666666666666667 1.9166666666666667 0.0)
#(4.333333333333334 1.3333333333333335 0.0)
#(4.666666666666667 0.6666666666666667 0.0)
#(4.666666666666667 5.551115123125783e-17 0.0))
(#(4.666666666666667 5.551115123125783e-17 0.0)
#(4.666666666666667 -0.6666666666666666 0.0)
#(4.333333333333334 -1.3333333333333333 0.0)
#(3.666666666666667 -1.9166666666666665 0.0))
(#(3.666666666666667 -1.9166666666666665 0.0) #(3.0 -2.5 0.0)
((((#(0.0 0.0 0.0) #(2.0 3.0 0.0) #(4.0 2.0 0.0) #(5.0 0.0 0.0)
#(4.0 -2.0 0.0) #(2.0 -3.0 0.0) #(0.0 0.0 0.0))
(1.0 1.0 1.0 1.0 1.0 1.0 1.0)
(0.0 0.0 0.0 0.0 0.25 0.5 0.75 1.0 1.0 1.0 1.0) 3)
((#(0.0 0.0 0.0) #(2.0 3.0 0.0) #(3.0 2.5 0.0)
#(3.666666666666667 1.9166666666666667 0.0))
(#(3.666666666666667 1.9166666666666667 0.0)
#(4.333333333333334 1.3333333333333335 0.0)
#(4.666666666666667 0.6666666666666667 0.0)
#(4.666666666666667 5.551115123125783e-17 0.0))
(#(4.666666666666667 5.551115123125783e-17 0.0)
#(4.666666666666667 -0.6666666666666666 0.0)
#(4.333333333333334 -1.3333333333333333 0.0)
#(3.666666666666667 -1.9166666666666665 0.0))
(#(3.666666666666667 -1.9166666666666665 0.0) #(3.0 -2.5 0.0)
#(2.0 -3.0 0.0) #(0.0 0.0 0.0)))))
\ No newline at end of file
((((#(0.0 0.0 0.0) #(4.0 1.0 0.0) #(8.0 1.0 0.0) #(10.0 0.0 0.0)
#(8.0 -1.0 0.0) #(4.0 -1.0 0.0) #(0.0 0.0 0.0))
(#(0.0 0.0 2.0) #(4.0 2.0 2.0) #(8.0 2.0 2.0) #(10.0 0.0 2.0)
#(8.0 -2.0 2.0) #(4.0 -2.0 2.0) #(0.0 0.0 2.0))
(#(0.0 0.0 4.0) #(4.0 2.0 4.0) #(8.0 2.0 4.0) #(10.0 0.0 4.0)
#(8.0 -2.0 4.0) #(4.0 -2.0 4.0) #(0.0 0.0 4.0))
(#(0.0 0.0 7.0) #(4.0 1.0 7.0) #(8.0 1.0 7.0) #(10.0 0.0 7.0)
#(8.0 -1.0 7.0) #(4.0 -1.0 7.0) #(0.0 0.0 7.0)))
((1.0 1.0 1.0 1.0 1.0 1.0 1.0) (1.0 1.0 1.0 1.0 1.0 1.0 1.0)
(1.0 1.0 1.0 1.0 1.0 1.0 1.0) (1.0 1.0 1.0 1.0 1.0 1.0 1.0))
(0.0 0.0 0.0 0.0 0.25 0.5 0.75 1.0 1.0 1.0 1.0)
((((#(0.0 0.0 0.0) #(4.0 1.0 0.0) #(8.0 1.0 0.0) #(10.0 0.0 0.0)
#(8.0 -1.0 0.0) #(4.0 -1.0 0.0) #(0.0 0.0 0.0))
(#(0.0 0.0 2.0) #(4.0 2.0 2.0) #(8.0 2.0 2.0) #(10.0 0.0 2.0)
#(8.0 -2.0 2.0) #(4.0 -2.0 2.0) #(0.0 0.0 2.0))
(#(0.0 0.0 4.0) #(4.0 2.0 4.0) #(8.0 2.0 4.0) #(10.0 0.0 4.0)
#(8.0 -2.0 4.0) #(4.0 -2.0 4.0) #(0.0 0.0 4.0))
(#(0.0 0.0 7.0) #(4.0 1.0 7.0) #(8.0 1.0 7.0) #(10.0 0.0 7.0)
#(8.0 -1.0 7.0) #(4.0 -1.0 7.0) #(0.0 0.0 7.0)))
((1.0 1.0 1.0 1.0 1.0 1.0 1.0) (1.0 1.0 1.0 1.0 1.0 1.0 1.0)
(1.0 1.0 1.0 1.0 1.0 1.0 1.0) (1.0 1.0 1.0 1.0 1.0 1.0 1.0))
(0.0 0.0 0.0 0.0 0.25 0.5 0.75 1.0 1.0 1.0 1.0)
(0.0 0.0 0.0 0.0 1.0 1.0 1.0 1.0) 3 3))
\ No newline at end of file
This diff is collapsed.
((938.4943938400957 1913.2227828477558 1913.2227828477558
(:area-static-moments
#(-0.0013629417107122177 1.6198634932171612e-6 9.977362726658612e-4)
:area-moments-of-inertia
#(39523.67687434335 14198.196494987456 13542.898007592916)
:area-products-of-inertia
#(-0.0018828402644289705 -0.03713940577119883 8.313556257376593e-5)
:area-second-moment-about-coordinate-axii
#(27741.09450258037 53066.57488193627 53721.87336933081)
:volume-static-moments
#(0.0051595123906443855 -2.301610507804128e-13 -0.008454931321466574)
:volume-moments-of-inertia
#(58655.79971754248 15943.523190397971 15354.646062929749)
:volume-products-of-inertia
#(0.03170599243738202 0.22438885792837443 -4.202238940684497e-11)
:volume-second-moment-about-coordinate-axii
#(31298.169253327724 74010.44578047225 74599.32290794046))
(#(9.999999999999998 5.0 9.860761315262648e-32)
#(10.000037717712459 4.999999999999987 -1.725448266703643)
#(9.523010835693386 5.0 -3.505736826975036)
#(8.660254037844386 5.0 -4.999999999999998))
(#(8.66025403784439 5.0 4.999999999999989)
#(9.523010835693338 4.999999999999992 3.505736826975029)
#(10.000037717712472 5.0 1.7254482667036344)
#(9.999999999999998 5.0 -6.432571489356498e-15))
(#(-8.660254037844389 5.0 -4.999999999999998)
#(-9.215894073003376 4.999999999999996 -4.037936099691513)
#(-9.631341375577467 4.999999999999998 -2.9335537593550534)
#(-9.841092358652231 5.000000000000001 -1.7716384566836347))
(#(-9.841092358652231 5.000000000000001 -1.7716384566836347)
#(-9.96694294849709 5.000000000000003 -1.0744892750807837)
#(-10.01874286332219 5.0000000000000036 -0.35662822703734703)
#(-9.99187147172352 5.0000000000000036 0.3560001754984299))
(#(-9.99187147172352 5.0000000000000036 0.3560001754984299)
#(-9.92917155799329 5.0000000000000036 2.0187997814152427)