diff --git a/jsk_fetch_robot/README.md b/jsk_fetch_robot/README.md index 9aab1b786d..9a838c5d6f 100644 --- a/jsk_fetch_robot/README.md +++ b/jsk_fetch_robot/README.md @@ -33,22 +33,21 @@ ## How to Run +### Setup Environment (For Remote PC) -### Setup Environment - -First, you need to install ros. For ros indigo, please refer to install guide like [here](http://wiki.ros.org/indigo/Installation/Ubuntu) +First, you need to install ROS. For ROS melodic, please refer to install guide like [here](http://wiki.ros.org/melodic/Installation/Ubuntu). +Please make sure your ROS Distribution is indigo, kinetic or melodic. ```bash mkdir -p catkin_ws/src cd catkin_ws/src wstool init . wstool set --git jsk-ros-pkg/jsk_robot https://github.com/jsk-ros-pkg/jsk_robot.git -y -if [[ $ROS_DISTRO =~ ^(indigo|kinetic|melodic)$ ]]; then - wstool merge -t . https://raw.githubusercontent.com/jsk-ros-pkg/jsk_robot/master/jsk_fetch_robot/jsk_fetch_user.rosinstall.$ROS_DISTRO -else - echo "Your ROS distribution $ROS_DISTRO is not supported." -fi +wstool merge -t . https://raw.githubusercontent.com/jsk-ros-pkg/jsk_robot/master/jsk_fetch_robot/jsk_fetch_user.rosinstall.$ROS_DISTRO wstool update -t . +# To use eus10, furuschev script is required. +wget https://raw.githubusercontent.com/jsk-ros-pkg/jsk_roseus/master/setup_upstream.sh -O /tmp/setup_upstream.sh +bash /tmp/setup_upstream.sh -w ../ -p jsk-ros-pkg/geneus -p euslisp/jskeus source /opt/ros/$ROS_DISTRO/setup.bash rosdep install -y -r --from-paths . --ignore-src cd ../ @@ -56,6 +55,23 @@ catkin build fetcheus jsk_fetch_startup source devel/setup.bash ``` +#### Setup Environment (For Robot Internal PC, only for advanced developer) + +```bash +mkdir -p catkin_ws/src +cd catkin_ws/src +wstool init . +wstool set --git jsk-ros-pkg/jsk_robot https://github.com/knorth55/jsk_robot.git -v fetch15 -y +wstool update -t . +wstool merge -t . jsk-ros-pkg/jsk_robot/jsk_fetch_robot/jsk_fetch.rosinstall.$ROS_DISTRO +wstool update -t . +source /opt/ros/$ROS_DISTRO/setup.bash +rosdep install -y -r --from-paths . --ignore-src +cd ../ +catkin build +source devel/setup.bash +``` + ### Connecting to Fetch You need to install `ros-indigo-jsk-tools` to use `rosset*` tools, otherwise use setenv command diff --git a/jsk_fetch_robot/fetcheus/fetch-interface.l b/jsk_fetch_robot/fetcheus/fetch-interface.l index f90a4fd1be..57d64fb419 100644 --- a/jsk_fetch_robot/fetcheus/fetch-interface.l +++ b/jsk_fetch_robot/fetcheus/fetch-interface.l @@ -1,6 +1,7 @@ (require "package://fetcheus/fetch-utils.l") (require "package://pr2eus/robot-interface.l") (require "package://pr2eus_moveit/euslisp/robot-moveit.l") +(require "package://roseus_resume/euslisp/interruption-handler.l") (ros::load-ros-package "fetcheus") (ros::load-ros-package "fetch_driver_msgs") @@ -8,11 +9,11 @@ (defclass fetch-interface :super robot-move-base-interface - :slots (gripper-action moveit-robot fetch-controller-action) + :slots (gripper-action moveit-robot fetch-controller-action point-head-action) ) (defmethod fetch-interface - (:init (&key (default-collision-object t) &rest args) + (:init (&rest args &key (default-collision-object t) &allow-other-keys) (prog1 (send-super* :init :robot fetch-robot :base-frame-id "base_link" :odom-topic "/odom_combined" :base-controller-action-name nil args) (send self :add-controller :arm-controller) (send self :add-controller :torso-controller) @@ -29,17 +30,24 @@ (setq moveit-robot (instance fetch-robot :init)) (send self :set-moveit-environment (instance fetch-moveit-environment :init :robot moveit-robot)) (when (and (boundp '*co*) default-collision-object) - (send self :delete-headbox-collision-object) (send self :delete-keepout-collision-object) (send self :delete-ground-collision-object) - (send self :add-headbox-collision-object) (send self :add-keepout-collision-object) (send self :add-ground-collision-object)) (setq fetch-controller-action (instance ros::simple-action-client :init "/query_controller_states" robot_controllers_msgs::QueryControllerStatesAction)) - )) + (setq point-head-action + (instance ros::simple-action-client :init + "/head_controller/point_head" + control_msgs::PointHeadAction)) + + (roseus_resume:install-interruption-handler self + gripper-action + move-base-action + move-base-trajectory-action) + (roseus_resume:install-default-intervention self))) (:state (&rest args) "We do not have :wait-until-update option for :state :worldcoords. In other cases, :state calls with :wait-until-update by default, since Fetch publishes /joint_states from body and gripper at almost same frequency. @@ -117,8 +125,8 @@ Example usage: (subseq args (+ (position :use-torso args) 2)))))) (return-from :angle-vector (send* self :angle-vector-raw av tm ctype start-time args))) ;; - (when (not (numberp tm)) - (ros::warn ":angle-vector tm is not a number, use :angle-vector av tm args")) + (when (and (not (numberp tm)) (not (eql tm :fast))) + (ros::warn ":angle-vector tm is not a number, use :angle-vector av tm args~%")) (send* self :angle-vector-motion-plan av :ctype ctype :move-arm :rarm :total-time tm :start-offset-time (if start-offset-time start-offset-time start-time) :clear-velocities clear-velocities :use-torso use-torso args))) @@ -191,6 +199,17 @@ Example usage: (:stop-grasp (&rest args &key &allow-other-keys) (send* self :go-grasp :pos 0.1 args)) + (:point-head (pos &key (frame-id "base_link") (wait t)) + (let ((goal (instance control_msgs::PointHeadGoal :init))) + (send goal :target :header :stamp (ros::time-now)) + (send goal :target :header :frame_id frame-id) + (send goal :target :point (ros::pos->tf-point pos)) + (if wait + (send point-head-action :send-goal goal) + (send point-head-action :send-goal-and-wait goal) + ) + ) + ) (:go-grasp (&key (pos 0) (effort 50) (wait t)) (when (send self :simulation-modep) @@ -243,18 +262,6 @@ Example: (send self :gripper :position) => 0.00" (:delete-workspace () (send *co* :delete-attached-object-by-id "workspace") (send *co* :delete-object-by-id "workspace")) - (:add-headbox-collision-object () - (let () - ;; fetch must be :reset-pose when we run this method - (setq *fetch-headbox* (make-cube 100 201 120)) - (send *fetch-headbox* :move-coords (send robot :head_pan_link_lk :worldcoords) - (send robot :base_link_lk :worldcoords)) - (send *fetch-headbox* :translate #f(33.75 0 150) (send robot :head_pan_link_lk :worldcoords)) - (send *co* :add-attached-object *fetch-headbox* "head_pan_link" - :frame_id "head_pan_link" - :object_id "fetchheadbox"))) - (:delete-headbox-collision-object () - (send *co* :delete-attached-object-by-id "fetchheadbox")) (:add-keepout-collision-object () (let ((cube (make-cube 200 350 10)) (keepout (make-cylinder 300 10))) diff --git a/jsk_fetch_robot/fetcheus/fetch-utils.l b/jsk_fetch_robot/fetcheus/fetch-utils.l index ea4a1d27e2..67932a47fe 100644 --- a/jsk_fetch_robot/fetcheus/fetch-utils.l +++ b/jsk_fetch_robot/fetcheus/fetch-utils.l @@ -5,16 +5,40 @@ (defmethod fetch-robot (:inverse-kinematics - (target-coords &rest args &key link-list move-arm (use-torso t) move-target &allow-other-keys) + (target-coords &rest args &key link-list move-arm (use-torso t) + use-base (start-coords (send self :copy-worldcoords)) + (base-range (list :min #f(-30 -30 -30) + :max #f( 30 30 30))) + move-target &allow-other-keys) (unless move-arm (setq move-arm :rarm)) (unless move-target (setq move-target (send self :rarm :end-coords))) (unless link-list (setq link-list (send self :link-list (send move-target :parent) (unless use-torso (car (send self :rarm)))))) - (send-super* :inverse-kinematics target-coords - :move-target move-target - :link-list link-list - args)) + (cond + (use-base + (let ((diff-pos-rot + (concatenate float-vector + (send start-coords :difference-position self) + (send start-coords :difference-rotation self)))) + (send self :move-to start-coords :world) + (with-append-root-joint + (ll self link-list + :joint-class omniwheel-joint + :joint-args base-range) + (send (caar ll) :joint :joint-angle + (float-vector (elt diff-pos-rot 0) + (elt diff-pos-rot 1) + (rad2deg (elt diff-pos-rot 5)))) + (send-super* :inverse-kinematics target-coords + :move-target move-target + :link-list ll ;; link-list + args)))) + (t + (send-super* :inverse-kinematics target-coords + :move-target move-target + :link-list link-list + args)))) (:go-grasp (&key (pos 0)) ;; pos is between 0.0 and 0.1 (send self :l_gripper_finger_joint :joint-angle (/ (* pos 1000) 2)) ;; m -> mm diff --git a/jsk_fetch_robot/jsk_fetch.rosinstall.indigo b/jsk_fetch_robot/jsk_fetch.rosinstall.indigo index bae0cdd09b..189d65d616 100644 --- a/jsk_fetch_robot/jsk_fetch.rosinstall.indigo +++ b/jsk_fetch_robot/jsk_fetch.rosinstall.indigo @@ -4,29 +4,32 @@ - git: local-name: PR2/app_manager uri: https://github.com/PR2/app_manager.git - version: 1.1.0 -# For fetch to use twitter + version: kinetic-devel - git: - local-name: furushchev/image_pipeline - uri: https://github.com/furushchev/image_pipeline.git - version: develop -# To send lifelog data to musca + local-name: RobotWebTools/rosbridge_suite + uri: https://github.com/RobotWebTools/rosbridge_suite.git + version: 0.11.9 - git: - local-name: strands-project/mongodb_store - uri: https://github.com/strands-project/mongodb_store.git - version: 0.4.4 -# to install jsk_robot_startup/lifelog/common_logger.launch -# remove after current master is released + local-name: RoboticMaterials/FA-I-sensor + uri: https://github.com/RoboticMaterials/FA-I-sensor.git +- git: + local-name: fetchrobotics/fetch_ros + uri: https://github.com/fetchrobotics/fetch_ros.git + version: indigo-devel - git: - local-name: jsk-ros-pkg/jsk_robot - uri: https://github.com/jsk-ros-pkg/jsk_robot.git + local-name: fetchrobotics/robot_controllers + uri: https://github.com/fetchrobotics/robot_controllers.git + version: indigo-devel +- git: + local-name: jsk-ros-pkg/jsk_3rdparty + uri: https://github.com/jsk-ros-pkg/jsk_3rdparty.git version: master # to pass build of jsk_robot -# remove after 2.2.10 is released +# remove after 2.2.11 is released - git: local-name: jsk-ros-pkg/jsk_common uri: https://github.com/jsk-ros-pkg/jsk_common.git - version: 2.2.10 + version: 799fd309c1519801fcb3a37c9094814004d78594 # to avoid volume 0 problem # remove after 0.3.14 (https://github.com/jsk-ros-pkg/jsk_pr2eus/commit/41183fe3401d742bbec0edd13b67cb909a6968bd) is released - git: @@ -39,7 +42,12 @@ - git: local-name: jsk-ros-pkg/jsk_demos uri: https://github.com/jsk-ros-pkg/jsk_demos.git - version: 810acc7 + version: 7c429715d0adf12c5dd34459ceb4b0a5b11dec6c +# need to build from source because of nodelet version +- git: + local-name: jsk-ros-pkg/jsk_recognition + uri: https://github.com/jsk-ros-pkg/jsk_recognition.git + version: acb7e7dc5b549f8663dec403abdb80cbac36edf1 # jsk_topic_tools requires nodelet gte 1.9.11 # remove after 1.9.11 is released by apt - git: @@ -51,20 +59,20 @@ - git: local-name: ros-drivers/audio_common uri: https://github.com/ros-drivers/audio_common.git - version: 0.3.3 + version: master # to install nodelet_plugins.xml # remove after 1.3.10 is released by apt - git: local-name: ros-perception/slam_gmapping uri: https://github.com/ros-perception/slam_gmapping.git version: 1.3.10 -# indigo is already EOL and 2.1.13 is never released. +# indigo is already EOL and 2.1.15 is never released. # set the same version as https://github.com/jsk-ros-pkg/jsk_robot/blob/master/.travis.rosinstall.indigo#L7-L11 -# change to 2.1.14 when it is released. +# change to 2.1.15 when it is released. - git: local-name: jsk-ros-pkg/jsk_3rdparty uri: https://github.com/jsk-ros-pkg/jsk_3rdparty.git - version: 82e897dcbdcd6aa0cbd126fa122d4dbdc9df67c9 + version: ffbd7b0592d7dd2f830f185636a1dd1695d8cb44 # Use joy/joy_remap.py - git: local-name: ros-drivers/joystick_drivers @@ -103,3 +111,12 @@ local-name: fetchrobotics/fetch_open_auto_dock uri: https://github.com/fetchrobotics/fetch_open_auto_dock.git version: 0.1.2 +# indigo is already EOL and visualization_msgs is never released +- tar: + local-name: ros/common_msgs/visualization_msgs + uri: https://github.com/ros-gbp/common_msgs-release/archive/release/kinetic/visualization_msgs/1.12.7-0.tar.gz + version: common_msgs-release-release-kinetic-visualization_msgs-1.12.7-0 +- git: + local-name: locusrobotics/catkin_virtualenv + uri: https://github.com/locusrobotics/catkin_virtualenv.git + version: 0.5.0 diff --git a/jsk_fetch_robot/jsk_fetch.rosinstall.melodic b/jsk_fetch_robot/jsk_fetch.rosinstall.melodic index 22b0bb9cb6..11cf98a74e 100644 --- a/jsk_fetch_robot/jsk_fetch.rosinstall.melodic +++ b/jsk_fetch_robot/jsk_fetch.rosinstall.melodic @@ -1,10 +1,9 @@ # This is rosinstall file for melodic PC inside fetch. # $ ln -s $(rospack find jsk_fetch_startup)/../jsk_fetch.rosinstall.$ROS_DISTRO $HOME/ros/$ROS_DISTRO/src/.rosinstall - - git: local-name: PR2/app_manager - uri: https://github.com/PR2/app_manager.git - version: kinetic-devel + uri: https://github.com/knorth55/app_manager.git + version: fetch15 - git: local-name: RobotWebTools/rosbridge_suite uri: https://github.com/RobotWebTools/rosbridge_suite.git @@ -26,8 +25,14 @@ local-name: jsk-ros-pkg/jsk_3rdparty uri: https://github.com/knorth55/jsk_3rdparty.git version: fetch15 -# we need to use the development branch (fetch15 branch in knorth55's fork) -# until it is merged to master +# we need to use the development branch until PR below are merged. +# - https://github.com/jsk-ros-pkg/jsk_common/pull/1719 +# - https://github.com/jsk-ros-pkg/jsk_common/pull/1746 +# Waiting 2.2.12 release +# - git: +# local-name: jsk-ros-pkg/jsk_common +# uri: https://github.com/jsk-ros-pkg/jsk_common.git +# version: master - git: local-name: jsk-ros-pkg/jsk_common uri: https://github.com/knorth55/jsk_common.git @@ -42,16 +47,17 @@ local-name: jsk-ros-pkg/jsk_pr2eus uri: https://github.com/jsk-ros-pkg/jsk_pr2eus.git version: master -# we need to use the development branch (throttle-insta360 branch in 708yamaguchi's fork) -# Restore jsk-ros-pkg/jsk_recognition master branch if https://github.com/jsk-ros-pkg/jsk_recognition/pull/2596 is merged. +# we need to use the development branch until PR below are merged. +# - https://github.com/jsk-ros-pkg/jsk_recognition/pull/2642 +# Restore jsk-ros-pkg/jsk_recognition master branch when the PRs are merged. # - git: # local-name: jsk-ros-pkg/jsk_recognition # uri: https://github.com/jsk-ros-pkg/jsk_recognition.git # version: master - git: local-name: jsk-ros-pkg/jsk_recognition - uri: https://github.com/708yamaguchi/jsk_recognition.git - version: throttle-insta360 + uri: https://github.com/sktometometo/jsk_recognition.git + version: develop/fetch # we need to use the development branch (fetch15 branch in knorth55's fork) # until it is merged to master - git: @@ -62,10 +68,6 @@ local-name: knorth55/app_manager_utils uri: https://github.com/knorth55/app_manager_utils version: master -- git: - local-name: locusrobotics/catkin_virtualenv - uri: https://github.com/locusrobotics/catkin_virtualenv.git - version: 0.5.0 - git: local-name: mikeferguson/robot_calibration uri: https://github.com/mikeferguson/robot_calibration.git @@ -99,16 +101,23 @@ local-name: strands-project/mongodb_store uri: https://github.com/708yamaguchi/mongodb_store.git version: fetch15 -# we need to use the development branch (fetch15 branch in knorth55's fork) -# until it is merged to master +# we need to use the develop branch for basic authentication - git: local-name: tork-a/roswww - uri: https://github.com/knorth55/roswww.git - version: fetch15 + uri: https://github.com/tork-a/roswww.git + version: develop +# we need to use the development branch until PR below are merged. +# - https://github.com/tork-a/visualization_rwt/pull/117 +# - https://github.com/tork-a/visualization_rwt/pull/124 +# Restore original repository when the PRs are merged. +# - git: +# local-name: tork-a/visualization_rwt +# uri: https://github.com/tork-a/visualization_rwt.git +# version: kinetic-devel - git: local-name: tork-a/visualization_rwt - uri: https://github.com/tork-a/visualization_rwt.git - version: kinetic-devel + uri: https://github.com/knorth55/visualization_rwt.git + version: fetch15 # robot_pose_publisher is not released on melodic - git: local-name: GT-RAIL/robot_pose_publisher @@ -119,16 +128,57 @@ # If you upgrade realsense-ros version, please upgrade librealsense packages. # Currently, realsense-ros 2.3.0 (source) and librealsense 2.45.0 (apt) works # https://github.com/IntelRealSense/librealsense/issues/10304#issuecomment-1067354378 +# realsense_camera has a problem in src/base_realsense_node.cpp which prevents it from build (find_if -> std::find_if) +# https://github.com/IntelRealSense/realsense-ros/issues/910 +# Using Affonso-Gui/realsense e155795440b29d4edb78827ac0d1f50e4aad8750 for now - git: local-name: IntelRealSense/realsense-ros - uri: https://github.com/IntelRealSense/realsense-ros.git - version: 2.3.0 + uri: https://github.com/Affonso-Gui/realsense.git + version: fetch15 +# - git: +# local-name: IntelRealSense/realsense-ros +# uri: https://github.com/IntelRealSense/realsense-ros.git +# version: 2.3.0 +# Until PRs below merged, we need to use develop branch +# - https://github.com/fetchrobotics/fetch_open_auto_dock/pull/9 +# - https://github.com/fetchrobotics/fetch_open_auto_dock/pull/8 - git: local-name: fetchrobotics/fetch_open_auto_dock - uri: https://github.com/fetchrobotics/fetch_open_auto_dock.git - version: melodic-devel + uri: https://github.com/sktometometo/fetch_open_auto_dock.git + version: fetchdev # Use https://github.com/ros-planning/navigation/pull/839 based on 7f22997e6804d9d7249b8a1d789bf27343b26f75 - git: local-name: ros-planning/navigation uri: https://github.com/708yamaguchi/navigation.git version: fetch15 +# Use coral_usb_ros + cv_bridge_python3 +- git: + local-name: jsk-ros-pkg/coral_usb_ros + uri: https://github.com/jsk-ros-pkg/coral_usb_ros.git + version: master +# eus10 and roseus_resume +- git: + local-name: euslisp/Euslisp + uri: https://github.com/Affonso-Gui/EusLisp.git + version: eus10 +- git: + local-name: jsk-ros-pkg/jsk_roseus + uri: https://github.com/knorth55/jsk_roseus.git + version: fetch15 +- git: + local-name: euslisp/jskeus + uri: https://github.com/euslisp/jskeus.git + version: master +- git: + local-name: jsk-ros-pkg/geneus + uri: https://github.com/jsk-ros-pkg/geneus.git + version: master +- git: + local-name: roseus_resume + uri: https://github.com/Affonso-Gui/roseus_resume.git + version: eus10 +# roseus_bt +- git: + local-name: BehaviorTree.ROS + uri: https://github.com/BehaviorTree/BehaviorTree.ROS + version: master diff --git a/jsk_fetch_robot/jsk_fetch_accessories/head_l515/fetch_head_l515_mount.step b/jsk_fetch_robot/jsk_fetch_accessories/head_l515/fetch_head_l515_mount.step new file mode 100755 index 0000000000..534ba78990 --- /dev/null +++ b/jsk_fetch_robot/jsk_fetch_accessories/head_l515/fetch_head_l515_mount.step @@ -0,0 +1,3571 @@ +ISO-10303-21; +HEADER; +FILE_DESCRIPTION (( 'STEP AP214' ), + '1' ); +FILE_NAME ('jsk_fetch_l515headmount.STEP', + '2021-07-29T05:55:12', + ( '' ), + ( '' ), + 'SwSTEP 2.0', + 'SolidWorks 2019', + '' ); +FILE_SCHEMA (( 'AUTOMOTIVE_DESIGN' )); +ENDSEC; + +DATA; +#1 = ORIENTED_EDGE ( 'NONE', *, *, #2348, .T. ) ; +#2 = CARTESIAN_POINT ( 'NONE', ( -42.23330461419529058, 8.916679505932764371, -9.689801797596356181 ) ) ; +#3 = CARTESIAN_POINT ( 'NONE', ( -42.92726601009340470, 6.534591258039998962, 13.39603710458470509 ) ) ; +#4 = DIRECTION ( 'NONE', ( 0.000000000000000000, -0.000000000000000000, -1.000000000000000000 ) ) ; +#5 = CARTESIAN_POINT ( 'NONE', ( 36.80118201742403272, 30.26574514009470107, 6.931169661506055846 ) ) ; +#6 = DIRECTION ( 'NONE', ( -0.000000000000000000, 0.000000000000000000, -1.000000000000000000 ) ) ; +#7 = DIRECTION ( 'NONE', ( 0.000000000000000000, 0.000000000000000000, -1.000000000000000000 ) ) ; +#8 = ORIENTED_EDGE ( 'NONE', *, *, #564, .T. ) ; +#9 = CARTESIAN_POINT ( 'NONE', ( -30.24108867664220668, 33.09510371101609394, -13.98362640057776396 ) ) ; +#10 = LINE ( 'NONE', #1151, #2476 ) ; +#11 = CARTESIAN_POINT ( 'NONE', ( -32.14518621856249325, 32.72879920981658586, -13.75537618510425908 ) ) ; +#12 = ORIENTED_EDGE ( 'NONE', *, *, #142, .T. ) ; +#13 = CARTESIAN_POINT ( 'NONE', ( -39.54706189466428867, 22.29032810037977441, -7.246389550346690633 ) ) ; +#14 = CARTESIAN_POINT ( 'NONE', ( -42.98895923545502029, 6.322823416230354709, 12.85975734684950211 ) ) ; +#15 = ORIENTED_EDGE ( 'NONE', *, *, #2391, .F. ) ; +#16 = CARTESIAN_POINT ( 'NONE', ( 45.50000000000002132, 5.000000000000000000, 20.50000000000000000 ) ) ; +#17 = CARTESIAN_POINT ( 'NONE', ( -37.50000000000000000, 75.00000000000001421, -12.50000000000000000 ) ) ; +#18 = CARTESIAN_POINT ( 'NONE', ( -37.50000000000000000, 25.16419609954000691, 17.99999999999999645 ) ) ; +#19 = ADVANCED_FACE ( 'NONE', ( #52, #1774 ), #1120, .F. ) ; +#20 = LINE ( 'NONE', #646, #2637 ) ; +#21 = ORIENTED_EDGE ( 'NONE', *, *, #1711, .F. ) ; +#22 = AXIS2_PLACEMENT_3D ( 'NONE', #2158, #1471, #25 ) ; +#23 = EDGE_CURVE ( 'NONE', #1380, #2155, #589, .T. ) ; +#24 = DIRECTION ( 'NONE', ( -0.000000000000000000, 1.000000000000000000, -0.000000000000000000 ) ) ; +#25 = DIRECTION ( 'NONE', ( 0.000000000000000000, 0.000000000000000000, -1.000000000000000000 ) ) ; +#26 = CARTESIAN_POINT ( 'NONE', ( -33.77993903277662469, 33.99780946660671077, -16.55285594409495431 ) ) ; +#27 = ORIENTED_EDGE ( 'NONE', *, *, #1107, .T. ) ; +#28 = CARTESIAN_POINT ( 'NONE', ( -41.50565207264286727, 16.60159655432851622, -8.399460044431059202 ) ) ; +#29 = CARTESIAN_POINT ( 'NONE', ( -38.21994831615298693, 22.69290528549759500, 18.00000000000000000 ) ) ; +#30 = VERTEX_POINT ( 'NONE', #336 ) ; +#31 = CARTESIAN_POINT ( 'NONE', ( 17.22413793103449464, 10.00000000000000000, -0.5000000000000004441 ) ) ; +#32 = DIRECTION ( 'NONE', ( -0.000000000000000000, -0.000000000000000000, -1.000000000000000000 ) ) ; +#33 = DIRECTION ( 'NONE', ( 0.000000000000000000, 0.000000000000000000, -1.000000000000000000 ) ) ; +#34 = CARTESIAN_POINT ( 'NONE', ( -33.03257378525533738, 31.99619020741757680, -20.50000000000000000 ) ) ; +#35 = ORIENTED_EDGE ( 'NONE', *, *, #2010, .T. ) ; +#36 = CARTESIAN_POINT ( 'NONE', ( -30.24108867664220668, 33.09510371101609394, -13.98362640057776396 ) ) ; +#37 = CARTESIAN_POINT ( 'NONE', ( -33.59905643722286328, 39.56632930884226340, 8.586160965561267844 ) ) ; +#38 = DIRECTION ( 'NONE', ( 0.000000000000000000, 0.000000000000000000, -1.000000000000000000 ) ) ; +#39 = CARTESIAN_POINT ( 'NONE', ( 39.33771734142730736, 22.89837003650006153, 17.86806588320381906 ) ) ; +#40 = VERTEX_POINT ( 'NONE', #765 ) ; +#41 = CIRCLE ( 'NONE', #1564, 4.000000000000000000 ) ; +#42 = CARTESIAN_POINT ( 'NONE', ( -42.54375550167739561, 7.851027417807084241, -10.29502450199527885 ) ) ; +#43 = AXIS2_PLACEMENT_3D ( 'NONE', #2395, #472, #1329 ) ; +#44 = CARTESIAN_POINT ( 'NONE', ( -44.36934426592454628, 8.283993259259583297, 15.18396257553578543 ) ) ; +#45 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION ( '', ( #1028 ), #1164 ) ; +#46 = ORIENTED_EDGE ( 'NONE', *, *, #2669, .T. ) ; +#47 = CARTESIAN_POINT ( 'NONE', ( -31.80596576484949978, 35.85259229793309999, -12.25433914335906138 ) ) ; +#48 = DIRECTION ( 'NONE', ( 0.000000000000000000, 0.000000000000000000, 1.000000000000000000 ) ) ; +#49 = DIRECTION ( 'NONE', ( 0.000000000000000000, 0.000000000000000000, -1.000000000000000000 ) ) ; +#50 =( BOUNDED_SURFACE ( ) B_SPLINE_SURFACE ( 3, 2, ( + ( #2409, #1139, #72 ), + ( #929, #2006, #967 ), + ( #1982, #2033, #518 ), + ( #1594, #2670, #494 ), + ( #2621, #931, #322 ), + ( #270, #918, #296 ), + ( #87, #715, #700 ), + ( #2647, #1166, #1818 ), + ( #737, #1375, #2636 ), + ( #955, #477, #1768 ), + ( #2206, #2190, #1794 ), + ( #1348, #2227, #1128 ), + ( #2451, #726, #285 ), + ( #2659, #2412, #75 ), + ( #2021, #1573, #1556 ), + ( #2429, #1334, #111 ) ), + .UNSPECIFIED., .F., .F., .T. ) + B_SPLINE_SURFACE_WITH_KNOTS ( ( 4, 2, 2, 2, 2, 2, 2, 4 ), + ( 3, 3 ), + ( 0.000000000000000000, 0.0007846569004674718581, 0.001176985350701207841, 0.001569313800934943716, 0.001961642251168679591, 0.002353970701402415683, 0.002746299151636151341, 0.003138627601869887433 ), + ( 0.000000000000000000, 1.000000000000000000 ), + .UNSPECIFIED. ) + GEOMETRIC_REPRESENTATION_ITEM ( ) RATIONAL_B_SPLINE_SURFACE ( ( + ( 1.000000000000000000, 0.2168728904164866356, 1.000000000000000000), + ( 1.000000000000000000, 0.2100147327725616075, 1.000000000000000000), + ( 1.000000000000000000, 0.2040713226379783085, 1.000000000000000000), + ( 1.000000000000000000, 0.1976904878458617398, 1.000000000000000000), + ( 1.000000000000000000, 0.1959997285647044618, 1.000000000000000000), + ( 1.000000000000000000, 0.1937506485301896675, 1.000000000000000000), + ( 1.000000000000000000, 0.1931712647203893130, 1.000000000000000000), + ( 1.000000000000000000, 0.1931624902695895929, 1.000000000000000000), + ( 1.000000000000000000, 0.1937461617684644033, 1.000000000000000000), + ( 1.000000000000000000, 0.1960171411409001030, 1.000000000000000000), + ( 1.000000000000000000, 0.1976866490321846082, 1.000000000000000000), + ( 1.000000000000000000, 0.2019151207544363225, 1.000000000000000000), + ( 1.000000000000000000, 0.2044880519031182509, 1.000000000000000000), + ( 1.000000000000000000, 0.2102903139294395318, 1.000000000000000000), + ( 1.000000000000000000, 0.2134843460331373177, 1.000000000000000000), + ( 1.000000000000000000, 0.2168728904164864135, 1.000000000000000000) ) ) + REPRESENTATION_ITEM ( '' ) SURFACE ( ) ); +#51 = CARTESIAN_POINT ( 'NONE', ( -44.94552866371285660, 6.610463800732930828, -12.50000000000000000 ) ) ; +#52 = FACE_BOUND ( 'NONE', #149, .T. ) ; +#53 = VECTOR ( 'NONE', #2401, 1000.000000000000000 ) ; +#54 = CARTESIAN_POINT ( 'NONE', ( -33.27426852239292288, 34.99052006355213251, -17.37092549432447797 ) ) ; +#55 = DIRECTION ( 'NONE', ( -0.3223706153912012651, -0.9363265015356202481, -0.1391756762310300544 ) ) ; +#56 = CYLINDRICAL_SURFACE ( 'NONE', #2012, 10.00000000000000178 ) ; +#57 = CARTESIAN_POINT ( 'NONE', ( 38.21994831614073718, 22.69290528549494113, 18.00000000000000000 ) ) ; +#58 = CARTESIAN_POINT ( 'NONE', ( -34.58241321390985945, 33.72141263154953350, -17.16371861517608721 ) ) ; +#59 = CARTESIAN_POINT ( 'NONE', ( -43.57608948207057153, 10.58800436055562955, 12.97832405504144404 ) ) ; +#60 = EDGE_CURVE ( 'NONE', #776, #1800, #1194, .T. ) ; +#61 = ORIENTED_EDGE ( 'NONE', *, *, #228, .F. ) ; +#62 = CARTESIAN_POINT ( 'NONE', ( 0.000000000000000000, 24.99999999999999645, 9.500000000000001776 ) ) ; +#63 = CARTESIAN_POINT ( 'NONE', ( -30.33154712770451766, 33.30668923918088353, -10.77472311316831899 ) ) ; +#64 = CARTESIAN_POINT ( 'NONE', ( 28.36585991138574769, 54.76616564920129804, -135.3085362679971126 ) ) ; +#65 = CARTESIAN_POINT ( 'NONE', ( 32.33154110754892940, 43.24783170891807060, 14.42725225151875534 ) ) ; +#66 = ORIENTED_EDGE ( 'NONE', *, *, #196, .F. ) ; +#67 = CARTESIAN_POINT ( 'NONE', ( -31.69971801055696758, 34.68748463690393891, -16.18572902251193923 ) ) ; +#68 = CARTESIAN_POINT ( 'NONE', ( -31.98742823517704892, 44.24730866661698769, 11.64916250785373286 ) ) ; +#69 = DIRECTION ( 'NONE', ( -0.3255388549733763681, 0.9455286637128580418, 0.000000000000000000 ) ) ; +#70 = CARTESIAN_POINT ( 'NONE', ( 43.34254294013591391, 11.26634105166344746, 16.79537387900334622 ) ) ; +#71 = VECTOR ( 'NONE', #1551, 1000.000000000000000 ) ; +#72 = CARTESIAN_POINT ( 'NONE', ( -30.24108867664220668, 33.09510371101609394, -13.98362640057776396 ) ) ; +#73 = CARTESIAN_POINT ( 'NONE', ( -38.93961336429644859, 20.22258681569368122, 17.85684972154301775 ) ) ; +#74 = EDGE_CURVE ( 'NONE', #1838, #2746, #886, .T. ) ; +#75 = CARTESIAN_POINT ( 'NONE', ( -30.19304736377159770, 32.97365565854406100, -11.24041560048074473 ) ) ; +#76 = CARTESIAN_POINT ( 'NONE', ( -33.96276985076541166, 34.85354108118977479, -7.259012294323295755 ) ) ; +#77 = CARTESIAN_POINT ( 'NONE', ( -9.209006928406447301, 19.08775981524247101, 4.500000000000000888 ) ) ; +#78 = CARTESIAN_POINT ( 'NONE', ( -4.000000000000001776, 65.00000000000000000, 20.50000000000000000 ) ) ; +#79 = CARTESIAN_POINT ( 'NONE', ( 32.80462327031811753, 41.87376302754749702, 15.75747938236830414 ) ) ; +#80 = EDGE_CURVE ( 'NONE', #2740, #839, #865, .T. ) ; +#81 = ORIENTED_EDGE ( 'NONE', *, *, #686, .F. ) ; +#82 =( LENGTH_UNIT ( ) NAMED_UNIT ( * ) SI_UNIT ( .MILLI., .METRE. ) ); +#83 = LINE ( 'NONE', #2003, #469 ) ; +#84 = FACE_OUTER_BOUND ( 'NONE', #2066, .T. ) ; +#85 = CARTESIAN_POINT ( 'NONE', ( -34.11999303975385089, 36.76639026393176835, 16.89816763280588674 ) ) ; +#86 = CIRCLE ( 'NONE', #987, 27.50000000000000000 ) ; +#87 = CARTESIAN_POINT ( 'NONE', ( -32.00002563971278846, 32.30164887348127678, -12.61180519082622808 ) ) ; +#88 =( GEOMETRIC_REPRESENTATION_CONTEXT ( 3 ) GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT ( ( #1813 ) ) GLOBAL_UNIT_ASSIGNED_CONTEXT ( ( #1396, #1419, #2275 ) ) REPRESENTATION_CONTEXT ( 'NONE', 'WORKASPACE' ) ); +#89 = CARTESIAN_POINT ( 'NONE', ( -34.52677352094674745, 33.75846259183247611, -7.871530568415401774 ) ) ; +#90 = DIRECTION ( 'NONE', ( -1.224646799147352961E-16, -3.556990613648029896E-16, 1.000000000000000000 ) ) ; +#91 = VECTOR ( 'NONE', #1006, 1000.000000000000000 ) ; +#92 = DIRECTION ( 'NONE', ( 0.000000000000000000, 0.000000000000000000, -1.000000000000000000 ) ) ; +#93 = CARTESIAN_POINT ( 'NONE', ( 32.28090642499899587, 43.07922933215750305, 14.27218612157843225 ) ) ; +#94 = EDGE_CURVE ( 'NONE', #1630, #1626, #419, .T. ) ; +#95 = ORIENTED_EDGE ( 'NONE', *, *, #2149, .T. ) ; +#96 = DIRECTION ( 'NONE', ( 0.000000000000000000, 0.000000000000000000, -1.000000000000000000 ) ) ; +#97 = VECTOR ( 'NONE', #1799, 1000.000000000000000 ) ; +#98 = CARTESIAN_POINT ( 'NONE', ( -33.89385567669372534, 38.71008395840141247, 4.349116141318785544 ) ) ; +#99 = CARTESIAN_POINT ( 'NONE', ( 37.50000000000000000, 0.000000000000000000, -15.25000000000000355 ) ) ; +#100 = CARTESIAN_POINT ( 'NONE', ( -35.86915977639387876, 32.97280677233779045, -18.46760616633292429 ) ) ; +#101 = CARTESIAN_POINT ( 'NONE', ( -33.67197404367669833, 35.02009655344337347, -8.538045649365114897 ) ) ; +#102 = CARTESIAN_POINT ( 'NONE', ( -10.88337182448036522, 14.37644341801383874, -0.5000000000000004441 ) ) ; +#103 = DIRECTION ( 'NONE', ( -0.000000000000000000, -1.000000000000000000, -0.000000000000000000 ) ) ; +#104 = CARTESIAN_POINT ( 'NONE', ( -32.07817912651937320, 34.84403317655319654, -8.472129640656142158 ) ) ; +#105 = ORIENTED_EDGE ( 'NONE', *, *, #2656, .T. ) ; +#106 = EDGE_CURVE ( 'NONE', #1614, #2559, #2478, .T. ) ; +#107 = CARTESIAN_POINT ( 'NONE', ( -43.67796458834995832, 10.29210778282046235, 12.80896965692393508 ) ) ; +#108 = PLANE ( 'NONE', #2081 ) ; +#109 = CARTESIAN_POINT ( 'NONE', ( -31.98742823517723011, 44.24730866661645479, 13.35083749214627780 ) ) ; +#110 = AXIS2_PLACEMENT_3D ( 'NONE', #2154, #1238, #2537 ) ; +#111 = CARTESIAN_POINT ( 'NONE', ( -30.24108867664220668, 33.09510371101609394, -11.01637359942223959 ) ) ; +#112 = PRESENTATION_STYLE_ASSIGNMENT (( #1819 ) ) ; +#113 = DIRECTION ( 'NONE', ( 0.000000000000000000, -1.000000000000000000, 0.000000000000000000 ) ) ; +#114 = CARTESIAN_POINT ( 'NONE', ( -42.99999999999999289, 6.284924945759550852, -9.278174593052025187 ) ) ; +#115 = CARTESIAN_POINT ( 'NONE', ( 42.81541933757661411, 6.918515559511263291, 13.92432882938398286 ) ) ; +#116 = VERTEX_POINT ( 'NONE', #2027 ) ; +#117 =( BOUNDED_CURVE ( ) B_SPLINE_CURVE ( 3, ( #2356, #1055, #1692, #1083 ), + .UNSPECIFIED., .F., .F. ) + B_SPLINE_CURVE_WITH_KNOTS ( ( 4, 4 ), + ( 4.712388980384689674, 6.283185307179586232 ), + .UNSPECIFIED. ) + CURVE ( ) GEOMETRIC_REPRESENTATION_ITEM ( ) RATIONAL_B_SPLINE_CURVE ( ( 1.000000000000000000, 0.8047378541243649375, 0.8047378541243649375, 1.000000000000000000 ) ) + REPRESENTATION_ITEM ( '' ) ); +#118 = CARTESIAN_POINT ( 'NONE', ( -42.96469508733384401, 6.406112403811265565, 11.87134553244891144 ) ) ; +#119 = VERTEX_POINT ( 'NONE', #959 ) ; +#120 = CARTESIAN_POINT ( 'NONE', ( -34.07699738444878790, 38.17814827220534823, 4.194022380370180159 ) ) ; +#121 = CARTESIAN_POINT ( 'NONE', ( -32.04197879035282170, 44.08886640158232950, 13.28475262339844143 ) ) ; +#122 = CARTESIAN_POINT ( 'NONE', ( -43.08759061399219092, 12.00685091267271609, -13.40234256660552958 ) ) ; +#123 = CARTESIAN_POINT ( 'NONE', ( -35.31999555688397407, 32.64726791736432432, -7.450487090025933234 ) ) ; +#124 = CARTESIAN_POINT ( 'NONE', ( -35.84294207509136498, 33.06965825867597175, -17.78067036384265620 ) ) ; +#125 = CIRCLE ( 'NONE', #490, 1.750000000000000888 ) ; +#126 = CARTESIAN_POINT ( 'NONE', ( 42.95367559951917968, 6.443937839889442465, 11.78200188557572403 ) ) ; +#127 = CARTESIAN_POINT ( 'NONE', ( -31.56936906224671446, 34.61866784516882234, -8.943873010434925774 ) ) ; +#128 = CARTESIAN_POINT ( 'NONE', ( 43.96825760039320130, 9.448950784602986985, 15.93434294849813426 ) ) ; +#129 = ORIENTED_EDGE ( 'NONE', *, *, #2281, .T. ) ; +#130 = CIRCLE ( 'NONE', #1385, 4.000000000000001776 ) ; +#131 = PRESENTATION_STYLE_ASSIGNMENT (( #1802 ) ) ; +#132 = CARTESIAN_POINT ( 'NONE', ( -43.64736563081370235, 10.38098255456961638, 13.50780290470233425 ) ) ; +#133 = EDGE_LOOP ( 'NONE', ( #2282, #2759 ) ) ; +#134 = DIRECTION ( 'NONE', ( 0.000000000000000000, -1.000000000000000000, 0.000000000000000000 ) ) ; +#135 = CARTESIAN_POINT ( 'NONE', ( -32.00000000000000000, 44.21079393477482000, 12.49999999999999822 ) ) ; +#136 = CIRCLE ( 'NONE', #1486, 5.499999999999996447 ) ; +#137 = EDGE_LOOP ( 'NONE', ( #66, #1600, #1112, #403 ) ) ; +#138 = EDGE_CURVE ( 'NONE', #620, #1225, #394, .T. ) ; +#139 = CARTESIAN_POINT ( 'NONE', ( -44.71499975903603996, 7.280035754606394960, -10.77904823010123891 ) ) ; +#140 = CARTESIAN_POINT ( 'NONE', ( -35.28033923126954363, 32.78339202938938257, -7.467607744548145021 ) ) ; +#141 = DIRECTION ( 'NONE', ( -1.000000000000000000, 0.000000000000000000, 0.000000000000000000 ) ) ; +#142 = EDGE_CURVE ( 'NONE', #2735, #2480, #2054, .T. ) ; +#143 = CARTESIAN_POINT ( 'NONE', ( 43.05645483273637097, 12.09728489066162815, 13.23782609026664758 ) ) ; +#144 = CARTESIAN_POINT ( 'NONE', ( -35.74840755681335480, 33.32353198708886310, -6.567148390511783340 ) ) ; +#145 = CARTESIAN_POINT ( 'NONE', ( -41.08453677334735943, 17.82472731161873725, -18.46428714509136881 ) ) ; +#146 = ORIENTED_EDGE ( 'NONE', *, *, #1593, .F. ) ; +#147 = CARTESIAN_POINT ( 'NONE', ( -43.08988301295357104, 12.00019263241778589, 10.51163916011575772 ) ) ; +#148 = ORIENTED_EDGE ( 'NONE', *, *, #1927, .T. ) ; +#149 = EDGE_LOOP ( 'NONE', ( #2303, #2492 ) ) ; +#150 = DIRECTION ( 'NONE', ( -0.000000000000000000, -0.000000000000000000, -1.000000000000000000 ) ) ; +#151 = DIRECTION ( 'NONE', ( -0.000000000000000000, -1.000000000000000000, -0.000000000000000000 ) ) ; +#152 = CARTESIAN_POINT ( 'NONE', ( -34.39450537660771090, 33.83467480295717422, -7.959224172008664944 ) ) ; +#153 = ORIENTED_EDGE ( 'NONE', *, *, #2129, .F. ) ; +#154 = CARTESIAN_POINT ( 'NONE', ( -43.46764395096884215, 10.90298475856552329, -13.90979738967100587 ) ) ; +#155 = CARTESIAN_POINT ( 'NONE', ( -31.86183217147021907, 34.77050092954914362, -16.34513348874330063 ) ) ; +#156 = ADVANCED_FACE ( 'NONE', ( #989 ), #108, .T. ) ; +#157 = VECTOR ( 'NONE', #608, 1000.000000000000000 ) ; +#158 = CARTESIAN_POINT ( 'NONE', ( 42.92726601009340470, 6.534591258040051365, 11.60396289541529669 ) ) ; +#159 = CARTESIAN_POINT ( 'NONE', ( 32.72692620558899534, 41.54822417257172873, 9.743671291842574078 ) ) ; +#160 = ADVANCED_FACE ( 'NONE', ( #1372 ), #759, .F. ) ; +#161 = CARTESIAN_POINT ( 'NONE', ( -43.47883299615393327, 10.87048614040918082, -13.40461196430244328 ) ) ; +#162 = ORIENTED_EDGE ( 'NONE', *, *, #1171, .F. ) ; +#163 = CARTESIAN_POINT ( 'NONE', ( -43.67474508509558007, 10.30145884049983174, 13.29169076162558127 ) ) ; +#164 = ORIENTED_EDGE ( 'NONE', *, *, #828, .F. ) ; +#165 = ORIENTED_EDGE ( 'NONE', *, *, #106, .F. ) ; +#166 = CARTESIAN_POINT ( 'NONE', ( -37.50000000000000000, 75.00000000000001421, 9.749999999999998224 ) ) ; +#167 = CARTESIAN_POINT ( 'NONE', ( -30.09358264888986056, 32.72699386974174729, -13.01985449771353309 ) ) ; +#168 = CARTESIAN_POINT ( 'NONE', ( -37.50000000000000000, 0.000000000000000000, -15.25000000000000355 ) ) ; +#169 = ORIENTED_EDGE ( 'NONE', *, *, #1270, .T. ) ; +#170 = CARTESIAN_POINT ( 'NONE', ( -43.01892871247722638, 12.20627962907616926, -12.98569229327060270 ) ) ; +#171 = CARTESIAN_POINT ( 'NONE', ( -34.33743115981847893, 33.86227435829512444, -17.00121632836259877 ) ) ; +#172 = CARTESIAN_POINT ( 'NONE', ( 44.90380467601645620, 6.731651258784860481, 11.75704472016694524 ) ) ; +#173 = CARTESIAN_POINT ( 'NONE', ( 32.00000000000000000, 44.04346725332046475, 12.50000000000000000 ) ) ; +#174 = CARTESIAN_POINT ( 'NONE', ( -43.59320368275488988, 10.53829610896492497, -11.29710649816777490 ) ) ; +#175 = VERTEX_POINT ( 'NONE', #1604 ) ; +#176 = VECTOR ( 'NONE', #103, 1000.000000000000000 ) ; +#177 = ADVANCED_FACE ( 'NONE', ( #84 ), #1792, .F. ) ; +#178 = DIRECTION ( 'NONE', ( 0.000000000000000000, -1.000000000000000000, 0.000000000000000000 ) ) ; +#179 = AXIS2_PLACEMENT_3D ( 'NONE', #2294, #1157, #1377 ) ; +#180 = ORIENTED_EDGE ( 'NONE', *, *, #1994, .T. ) ; +#181 = FACE_BOUND ( 'NONE', #2318, .T. ) ; +#182 = CARTESIAN_POINT ( 'NONE', ( -37.50000000000000000, 6.000000000000005329, 16.99999999999999645 ) ) ; +#183 = DIRECTION ( 'NONE', ( 0.000000000000000000, -0.8591838389225134875, 0.5116670117707144971 ) ) ; +#184 = EDGE_LOOP ( 'NONE', ( #1421, #1851, #1633, #818 ) ) ; +#185 = CARTESIAN_POINT ( 'NONE', ( -44.59669480201716141, 7.623652887282672097, -10.39498267265966192 ) ) ; +#186 = CARTESIAN_POINT ( 'NONE', ( 15.54977303496059449, 10.28868360277136418, -0.5000000000000004441 ) ) ; +#187 = CIRCLE ( 'NONE', #949, 2.999999999999999112 ) ; +#188 = CARTESIAN_POINT ( 'NONE', ( 42.91187591077668628, 6.587419232237252231, 11.51526756757565906 ) ) ; +#189 = CARTESIAN_POINT ( 'NONE', ( 32.00000000000147793, 44.21079393474678199, 12.10821283959560901 ) ) ; +#190 = CARTESIAN_POINT ( 'NONE', ( -41.24826085141513943, 12.29793555972578289, -16.55044276841356066 ) ) ; +#191 = ORIENTED_EDGE ( 'NONE', *, *, #1462, .T. ) ; +#192 = B_SPLINE_CURVE_WITH_KNOTS ( 'NONE', 3, + ( #9, #866, #1903, #2569, #167, #2541, #1661, #414, #2322, #1873, #621, #1268, #1021, #2724 ), + .UNSPECIFIED., .F., .F., + ( 4, 2, 2, 2, 2, 2, 4 ), + ( 0.000000000000000000, 0.0007814279436001421528, 0.001172141915400213555, 0.001562855887200285173, 0.001953569859000356575, 0.002344283830800427976, 0.003125711774400576418 ), + .UNSPECIFIED. ) ; +#193 = CARTESIAN_POINT ( 'NONE', ( 45.50000000000002132, 0.000000000000000000, -20.50000000000000000 ) ) ; +#194 = ORIENTED_EDGE ( 'NONE', *, *, #2091, .T. ) ; +#195 = FACE_BOUND ( 'NONE', #424, .T. ) ; +#196 = EDGE_CURVE ( 'NONE', #2749, #1788, #2461, .T. ) ; +#197 = DIRECTION ( 'NONE', ( -0.000000000000000000, -0.000000000000000000, -1.000000000000000000 ) ) ; +#198 = CARTESIAN_POINT ( 'NONE', ( -37.50000000000000000, 6.000000000000005329, 17.99999999999999645 ) ) ; +#199 = EDGE_CURVE ( 'NONE', #2197, #2706, #2305, .T. ) ; +#200 = ORIENTED_EDGE ( 'NONE', *, *, #1548, .T. ) ; +#201 = CARTESIAN_POINT ( 'NONE', ( -43.66413554073179171, 10.33227429663104502, -13.34465359738889134 ) ) ; +#202 = CARTESIAN_POINT ( 'NONE', ( 0.000000000000000000, 5.000000000000000000, -20.50000000000000000 ) ) ; +#203 = CARTESIAN_POINT ( 'NONE', ( 43.20911154149872857, 11.65389298324826051, 11.25261746734080681 ) ) ; +#204 = CARTESIAN_POINT ( 'NONE', ( 33.27732909717393994, 40.50078741505782887, 8.535066353114178384 ) ) ; +#205 = DIRECTION ( 'NONE', ( 0.000000000000000000, 0.000000000000000000, -1.000000000000000000 ) ) ; +#206 = ORIENTED_EDGE ( 'NONE', *, *, #1159, .F. ) ; +#207 = CARTESIAN_POINT ( 'NONE', ( -44.94552866371264344, 6.610463800733539230, 12.39364399429241104 ) ) ; +#208 = ORIENTED_EDGE ( 'NONE', *, *, #1942, .F. ) ; +#209 = FACE_OUTER_BOUND ( 'NONE', #225, .T. ) ; +#210 = ORIENTED_EDGE ( 'NONE', *, *, #862, .F. ) ; +#211 = CARTESIAN_POINT ( 'NONE', ( 0.000000000000000000, 65.00000000000000000, 9.500000000000001776 ) ) ; +#212 = CARTESIAN_POINT ( 'NONE', ( -37.50000000000000000, 75.00000000000001421, 15.25000000000000355 ) ) ; +#213 = EDGE_CURVE ( 'NONE', #1589, #2058, #1862, .T. ) ; +#214 = CARTESIAN_POINT ( 'NONE', ( 43.01186382226980953, 12.22679962567527312, 12.11340478805033705 ) ) ; +#215 = CARTESIAN_POINT ( 'NONE', ( 43.29723134156520814, 11.39794873718754076, 11.00854648015568849 ) ) ; +#216 = CARTESIAN_POINT ( 'NONE', ( -44.94552866371259370, 6.610463800733696438, -12.63395078727329413 ) ) ; +#217 = ORIENTED_EDGE ( 'NONE', *, *, #736, .F. ) ; +#218 = FACE_OUTER_BOUND ( 'NONE', #802, .T. ) ; +#219 = VERTEX_POINT ( 'NONE', #1804 ) ; +#220 = CIRCLE ( 'NONE', #569, 30.00000000000000711 ) ; +#221 = STYLED_ITEM ( 'NONE', ( #131 ), #781 ) ; +#222 = CARTESIAN_POINT ( 'NONE', ( -31.94552866371286370, 44.36900610829383140, 12.50000000000000000 ) ) ; +#223 = CARTESIAN_POINT ( 'NONE', ( 37.50000000000000000, 75.00000000000001421, -12.50000000000000000 ) ) ; +#224 = CARTESIAN_POINT ( 'NONE', ( -31.67121089991161043, 36.36515437509692106, -11.90483886919879097 ) ) ; +#225 = EDGE_LOOP ( 'NONE', ( #344, #951, #2028, #668, #1184, #180, #2142, #393 ) ) ; +#226 = CARTESIAN_POINT ( 'NONE', ( -35.31999555688395986, 32.64726791736432432, -7.450487090025976755 ) ) ; +#227 = FACE_OUTER_BOUND ( 'NONE', #588, .T. ) ; +#228 = EDGE_CURVE ( 'NONE', #2469, #2690, #249, .T. ) ; +#229 = CARTESIAN_POINT ( 'NONE', ( 0.000000000000000000, 65.00000000000000000, 9.500000000000001776 ) ) ; +#230 = DIRECTION ( 'NONE', ( -1.000000000000000000, 0.000000000000000000, 0.000000000000000000 ) ) ; +#231 = CARTESIAN_POINT ( 'NONE', ( -44.00000000000000000, 6.284924945759554404, -12.50000000000000000 ) ) ; +#232 = CARTESIAN_POINT ( 'NONE', ( -34.27817459305202163, 36.22341709370545004, 18.00000000000000000 ) ) ; +#233 = EDGE_CURVE ( 'NONE', #1869, #2551, #1617, .T. ) ; +#234 = DIRECTION ( 'NONE', ( -0.000000000000000000, -0.000000000000000000, -1.000000000000000000 ) ) ; +#235 = ORIENTED_EDGE ( 'NONE', *, *, #842, .T. ) ; +#236 = DIRECTION ( 'NONE', ( 0.000000000000000000, -1.000000000000000000, 0.000000000000000000 ) ) ; +#237 = CARTESIAN_POINT ( 'NONE', ( -32.53238346409453641, 34.95761181683994323, -16.88420805175061901 ) ) ; +#238 = EDGE_LOOP ( 'NONE', ( #381, #2510, #2013, #146, #590 ) ) ; +#239 = CARTESIAN_POINT ( 'NONE', ( -43.47883299615207875, 10.87048614041807326, -11.59538803570062981 ) ) ; +#240 = CARTESIAN_POINT ( 'NONE', ( -39.93733163486376014, 16.79782431294328049, 17.44358128244661188 ) ) ; +#241 = ORIENTED_EDGE ( 'NONE', *, *, #1424, .F. ) ; +#242 = CARTESIAN_POINT ( 'NONE', ( 42.98233690606030422, 6.345555189378215388, 12.94953407607404650 ) ) ; +#243 = EDGE_CURVE ( 'NONE', #2587, #1870, #1409, .T. ) ; +#244 = CARTESIAN_POINT ( 'NONE', ( -4.000000000000001776, 65.00000000000000000, 20.50000000000000000 ) ) ; +#245 = CARTESIAN_POINT ( 'NONE', ( -37.50000000000000000, 5.000000000000004441, -12.50000000000000000 ) ) ; +#246 = CARTESIAN_POINT ( 'NONE', ( -42.98248968273709636, 6.345030768958843659, -12.95293874365824927 ) ) ; +#247 = ORIENTED_EDGE ( 'NONE', *, *, #898, .F. ) ; +#248 = CIRCLE ( 'NONE', #1676, 1.000000000000000888 ) ; +#249 = CIRCLE ( 'NONE', #1722, 10.00000000000000178 ) ; +#250 = CARTESIAN_POINT ( 'NONE', ( -32.36046589817100028, 34.93525169092457361, -16.76273340782259424 ) ) ; +#251 = CARTESIAN_POINT ( 'NONE', ( -31.94552866371286370, 44.36900610829383851, 12.50000000000000000 ) ) ; +#252 = CARTESIAN_POINT ( 'NONE', ( -34.91452504304472626, 34.37640409097092231, -17.37547336651662633 ) ) ; +#253 = CARTESIAN_POINT ( 'NONE', ( 35.24008933272911293, 34.79994392320067220, 17.60429368842698494 ) ) ; +#254 = VERTEX_POINT ( 'NONE', #320 ) ; +#255 = CARTESIAN_POINT ( 'NONE', ( -44.40633062024019040, 8.176566272780355860, -9.894119865994008833 ) ) ; +#256 = CARTESIAN_POINT ( 'NONE', ( -44.72738788084880923, 7.244054414484955906, 14.18329770745371476 ) ) ; +#257 = B_SPLINE_CURVE_WITH_KNOTS ( 'NONE', 3, + ( #1759, #486, #277, #1135, #1988, #1529, #1311, #1150, #2198, #925, #1973, #2629, #54, #2582, #707, #250, #2157, #67, #1958, #910, #1356, #663, #2393, #2002, #680, #36 ), + .UNSPECIFIED., .F., .F., + ( 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4 ), + ( 0.000000000000000000, 0.0005491052105900589902, 0.001098210421180117980, 0.001647315631770177079, 0.002196420842360235961, 0.003294631263540333775, 0.003843736474130380731, 0.004392841684720428554, 0.005491052105900521597, 0.006040157316490555976, 0.006589262527080589488, 0.007687472948260670388, 0.008785683369440753024 ), + .UNSPECIFIED. ) ; +#258 = CARTESIAN_POINT ( 'NONE', ( 44.94552866371285660, 6.610463800732986783, 12.49999999999998934 ) ) ; +#259 = LINE ( 'NONE', #2564, #1527 ) ; +#260 = DIRECTION ( 'NONE', ( -1.000000000000000000, 0.000000000000000000, 0.000000000000000000 ) ) ; +#261 = FACE_OUTER_BOUND ( 'NONE', #2124, .T. ) ; +#262 = ORIENTED_EDGE ( 'NONE', *, *, #1623, .T. ) ; +#263 = EDGE_CURVE ( 'NONE', #1281, #2512, #1481, .T. ) ; +#264 = CARTESIAN_POINT ( 'NONE', ( -32.55641871737685022, 42.13350728234175335, 10.06266836556246069 ) ) ; +#265 = CARTESIAN_POINT ( 'NONE', ( 37.50000000000000000, 5.000000000000004441, 12.50000000000000000 ) ) ; +#266 = CARTESIAN_POINT ( 'NONE', ( 33.54851438728953639, 39.71312885736416121, 16.79537387900164802 ) ) ; +#267 = CARTESIAN_POINT ( 'NONE', ( -31.17158371284658358, 32.72879920981659296, -13.98362640057776396 ) ) ; +#268 = CARTESIAN_POINT ( 'NONE', ( -44.60389381109560247, 7.602743341985673808, 14.59040309685429726 ) ) ; +#269 = EDGE_LOOP ( 'NONE', ( #1081, #854, #262, #1023, #95 ) ) ; +#270 = CARTESIAN_POINT ( 'NONE', ( -32.00337995441419281, 32.31131413025062216, -12.72169276642418367 ) ) ; +#271 = CARTESIAN_POINT ( 'NONE', ( -30.93353752410647317, 34.14291697002418857, -9.698515052243562806 ) ) ; +#272 = CARTESIAN_POINT ( 'NONE', ( -33.45489901264950561, 39.98503501767059021, 4.500000000000003553 ) ) ; +#273 = DIRECTION ( 'NONE', ( 1.000000000000000000, 0.000000000000000000, -0.000000000000000000 ) ) ; +#274 = CARTESIAN_POINT ( 'NONE', ( 32.27750898416621794, 43.40476818713108287, 14.59440178004758515 ) ) ; +#275 = EDGE_LOOP ( 'NONE', ( #1843, #2291 ) ) ; +#276 = AXIS2_PLACEMENT_3D ( 'NONE', #388, #2517, #2283 ) ; +#277 = CARTESIAN_POINT ( 'NONE', ( -35.73397950841482640, 33.31345185808230269, -18.42824659332720927 ) ) ; +#278 = CARTESIAN_POINT ( 'NONE', ( -36.06038663570740965, 30.10580538338960821, 7.143150278455386193 ) ) ; +#279 = EDGE_CURVE ( 'NONE', #2740, #1823, #1177, .T. ) ; +#280 = CARTESIAN_POINT ( 'NONE', ( 0.000000000000000000, 65.00000000000000000, 9.500000000000001776 ) ) ; +#281 = CARTESIAN_POINT ( 'NONE', ( 33.32773819346316913, 40.35437403084119268, 16.12052427299085622 ) ) ; +#282 = CARTESIAN_POINT ( 'NONE', ( -35.31999555688394565, 32.64726791736439537, -17.54951290997401614 ) ) ; +#283 = CARTESIAN_POINT ( 'NONE', ( -42.17307833103708958, 9.123411929629689610, 15.40598249488322935 ) ) ; +#284 = EDGE_CURVE ( 'NONE', #1700, #40, #1885, .T. ) ; +#285 = CARTESIAN_POINT ( 'NONE', ( -30.15188376376476498, 32.87082142819874520, -11.47847238159971361 ) ) ; +#286 = CARTESIAN_POINT ( 'NONE', ( -33.96223294681012561, 33.97850134521514320, -8.287068595243203717 ) ) ; +#287 = DIRECTION ( 'NONE', ( -0.000000000000000000, -1.000000000000000000, -0.000000000000000000 ) ) ; +#288 = DIRECTION ( 'NONE', ( -0.000000000000000000, -0.000000000000000000, -1.000000000000000000 ) ) ; +#289 = LINE ( 'NONE', #498, #2242 ) ; +#290 = VERTEX_POINT ( 'NONE', #1888 ) ; +#291 = CARTESIAN_POINT ( 'NONE', ( -32.72692620558866139, 41.54822417257454958, 9.743671291843066129 ) ) ; +#292 = CARTESIAN_POINT ( 'NONE', ( 34.73009560827771480, 34.67215538705879396, 17.30582513607999573 ) ) ; +#293 = CIRCLE ( 'NONE', #1852, 5.499999999999996447 ) ; +#294 = CARTESIAN_POINT ( 'NONE', ( -36.78005168384700596, 27.63548691358242237, 18.00000000000000000 ) ) ; +#295 = ADVANCED_FACE ( 'NONE', ( #2070 ), #1871, .T. ) ; +#296 = CARTESIAN_POINT ( 'NONE', ( -30.07850211878325553, 32.69008087267586404, -12.76200054212559287 ) ) ; +#297 = CARTESIAN_POINT ( 'NONE', ( -33.03506008595107346, 35.15678958969931500, -9.262171264487561118 ) ) ; +#298 = CARTESIAN_POINT ( 'NONE', ( 42.99999999999999289, 6.284924945759606807, 9.278174593052025187 ) ) ; +#299 = DIRECTION ( 'NONE', ( -0.000000000000000000, -1.000000000000000000, -0.000000000000000000 ) ) ; +#300 = DIRECTION ( 'NONE', ( 0.000000000000000000, 0.000000000000000000, -1.000000000000000000 ) ) ; +#301 =( BOUNDED_CURVE ( ) B_SPLINE_CURVE ( 3, ( #2116, #636, #2293, #222 ), + .UNSPECIFIED., .F., .F. ) + B_SPLINE_CURVE_WITH_KNOTS ( ( 4, 4 ), + ( 0.000000000000000000, 3.141592653589793116 ), + .UNSPECIFIED. ) + CURVE ( ) GEOMETRIC_REPRESENTATION_ITEM ( ) RATIONAL_B_SPLINE_CURVE ( ( 1.000000000000000000, 0.3333333333333333703, 0.3333333333333333703, 1.000000000000000000 ) ) + REPRESENTATION_ITEM ( '' ) ); +#302 = ORIENTED_EDGE ( 'NONE', *, *, #632, .T. ) ; +#303 = DIRECTION ( 'NONE', ( 0.000000000000000000, 0.000000000000000000, 1.000000000000000000 ) ) ; +#304 = CARTESIAN_POINT ( 'NONE', ( -33.54851438729056667, 39.71312885736113429, 8.204626120997511762 ) ) ; +#305 = DIRECTION ( 'NONE', ( -0.000000000000000000, -1.000000000000000000, -0.000000000000000000 ) ) ; +#306 = CARTESIAN_POINT ( 'NONE', ( -37.50000000000000000, 75.00000000000001421, -12.50000000000000000 ) ) ; +#307 = AXIS2_PLACEMENT_3D ( 'NONE', #231, #288, #1547 ) ; +#308 = CARTESIAN_POINT ( 'NONE', ( -35.73620674677023601, 31.21858356992108696, -17.72920197293977296 ) ) ; +#309 = AXIS2_PLACEMENT_3D ( 'NONE', #1842, #2032, #540 ) ; +#310 = CARTESIAN_POINT ( 'NONE', ( -35.16385991789602627, 34.13327680790062146, -7.501224860967944608 ) ) ; +#311 = CARTESIAN_POINT ( 'NONE', ( -30.24108867664220668, 33.09510371101609394, 4.500000000000000888 ) ) ; +#312 = VECTOR ( 'NONE', #791, 1000.000000000000000 ) ; +#313 = CARTESIAN_POINT ( 'NONE', ( 45.50000000000002132, 5.000000000000000000, 79.70475956827036157 ) ) ; +#314 = EDGE_CURVE ( 'NONE', #484, #550, #1440, .T. ) ; +#315 = CARTESIAN_POINT ( 'NONE', ( -36.74760041787510545, 27.74687895898129142, -18.00000000000000000 ) ) ; +#316 = ADVANCED_FACE ( 'NONE', ( #181, #2308, #1687, #2723, #2707 ), #1902, .F. ) ; +#317 = EDGE_LOOP ( 'NONE', ( #476, #15, #1395, #820 ) ) ; +#318 = CARTESIAN_POINT ( 'NONE', ( -38.93961336429978815, 20.22258681569468663, 7.143150278458371361 ) ) ; +#319 = AXIS2_PLACEMENT_3D ( 'NONE', #2181, #907, #1103 ) ; +#320 = CARTESIAN_POINT ( 'NONE', ( 45.50000000000002132, 5.000000000000000000, 20.50000000000000000 ) ) ; +#321 = CARTESIAN_POINT ( 'NONE', ( -33.32773819346034827, 40.35437403084400643, 16.12052427299086332 ) ) ; +#322 = CARTESIAN_POINT ( 'NONE', ( -30.09360412887403413, 32.72704643675674419, -13.02023507940720393 ) ) ; +#323 = SURFACE_STYLE_FILL_AREA ( #751 ) ; +#324 = CARTESIAN_POINT ( 'NONE', ( -35.77035682042875209, 33.24402226456976450, -17.75534695141841013 ) ) ; +#325 = CARTESIAN_POINT ( 'NONE', ( -32.14518621856249325, 32.72879920981659296, -11.24462381489573914 ) ) ; +#326 = ORIENTED_EDGE ( 'NONE', *, *, #485, .T. ) ; +#327 = ADVANCED_FACE ( 'NONE', ( #400, #195 ), #578, .F. ) ; +#328 = CARTESIAN_POINT ( 'NONE', ( -42.17307833103743775, 9.123411929629707373, 9.594017505117285793 ) ) ; +#329 =( BOUNDED_SURFACE ( ) B_SPLINE_SURFACE ( 3, 2, ( + ( #251, #681, #1803 ), + ( #1747, #525, #1974 ), + ( #68, #732, #2394 ), + ( #487, #2654, #1959 ), + ( #513, #2447, #2644 ), + ( #471, #1343, #264 ), + ( #2170, #2436, #291 ), + ( #1328, #722, #1109 ), + ( #304, #37, #897 ), + ( #2185, #911, #1760 ), + ( #2630, #708, #2616 ), + ( #694, #2199, #278 ), + ( #1567, #2422, #502 ), + ( #1357, #2213, #756 ), + ( #1628, #786, #318 ), + ( #537, #2481, #1176 ), + ( #986, #2067, #1224 ), + ( #2082, #1602, #2250 ), + ( #1001, #803, #1197 ), + ( #1407, #147, #2691 ), + ( #2289, #2666, #770 ), + ( #1853, #2704, #328 ), + ( #1868, #1640, #2494 ), + ( #575, #560, #1397 ), + ( #973, #107, #1437 ), + ( #1420, #163, #2276 ), + ( #2052, #132, #367 ), + ( #353, #1211, #1017 ), + ( #1615, #339, #2720 ), + ( #1382, #1658, #2511 ), + ( #1185, #2460, #2239 ), + ( #549, #2029, #2040 ), + ( #961, #1814, #118 ), + ( #1825, #2677, #744 ), + ( #2470, #2261, #1839 ), + ( #2524, #849, #382 ), + ( #207, #1280, #439 ), + ( #1295, #819, #1467 ) ), + .UNSPECIFIED., .F., .F., .T. ) + B_SPLINE_SURFACE_WITH_KNOTS ( ( 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4 ), + ( 3, 3 ), + ( 3.141592653589793116, 3.337942194439155408, 3.534291735288517255, 3.730641276137879103, 3.926990816987241395, 4.319689898685965090, 4.712388980384689674, 5.105088062083414258, 5.301437602932775661, 5.497787143782137953, 5.694136684631500245, 5.792311455056180947, 5.890486225480861648, 5.988660995905542350, 6.086835766330223940, 6.135923151542565179, 6.185010536754905530, 6.234097921967245881, 6.283185307179586232 ), + ( 0.000000000000000000, 1.000000000000000000 ), + .UNSPECIFIED. ) + GEOMETRIC_REPRESENTATION_ITEM ( ) RATIONAL_B_SPLINE_SURFACE ( ( + ( 1.000000000000000000, 0.9862881586313551052, 1.000000000000000000), + ( 1.000000000000000000, 0.9862886620239492697, 1.000000000000000000), + ( 1.000000000000000000, 0.9847468226703547378, 1.000000000000000000), + ( 1.000000000000000000, 0.9785975666658145444, 1.000000000000000000), + ( 1.000000000000000000, 0.9739896480940227752, 1.000000000000000000), + ( 1.000000000000000000, 0.9617554693256528120, 1.000000000000000000), + ( 1.000000000000000000, 0.9541292101921223789, 1.000000000000000000), + ( 1.000000000000000000, 0.9359386994017488970, 1.000000000000000000), + ( 1.000000000000000000, 0.9253744439781098619, 1.000000000000000000), + ( 1.000000000000000000, 0.8894434017616509314, 1.000000000000000000), + ( 1.000000000000000000, 0.8598216432907053175, 1.000000000000000000), + ( 1.000000000000000000, 0.7905347754438739605, 1.000000000000000000), + ( 1.000000000000000000, 0.7508658766753982805, 1.000000000000000000), + ( 1.000000000000000000, 0.6633476856976968650, 1.000000000000000000), + ( 1.000000000000000000, 0.6154803776380897151, 1.000000000000000000), + ( 1.000000000000000000, 0.5395685366565845520, 1.000000000000000000), + ( 1.000000000000000000, 0.5135864445227050767, 1.000000000000000000), + ( 1.000000000000000000, 0.4607773684079000676, 1.000000000000000000), + ( 1.000000000000000000, 0.4339434541726965300, 1.000000000000000000), + ( 1.000000000000000000, 0.3801944580785211469, 1.000000000000000000), + ( 1.000000000000000000, 0.3532598395136424818, 1.000000000000000000), + ( 1.000000000000000000, 0.3138283910423176337, 1.000000000000000000), + ( 1.000000000000000000, 0.3008525186326038714, 1.000000000000000000), + ( 1.000000000000000000, 0.2755469356016050364, 1.000000000000000000), + ( 1.000000000000000000, 0.2632145179655118739, 1.000000000000000000), + ( 1.000000000000000000, 0.2396680134331112821, 1.000000000000000000), + ( 1.000000000000000000, 0.2284507283938273792, 1.000000000000000000), + ( 1.000000000000000000, 0.2078644858772128179, 1.000000000000000000), + ( 1.000000000000000000, 0.1984960600877155867, 1.000000000000000000), + ( 1.000000000000000000, 0.1866179000439710245, 1.000000000000000000), + ( 1.000000000000000000, 0.1830235777788575269, 1.000000000000000000), + ( 1.000000000000000000, 0.1767131491669811094, 1.000000000000000000), + ( 1.000000000000000000, 0.1739978385178161113, 1.000000000000000000), + ( 1.000000000000000000, 0.1695842193437420986, 1.000000000000000000), + ( 1.000000000000000000, 0.1678868551765243244, 1.000000000000000000), + ( 1.000000000000000000, 0.1656105720155000849, 1.000000000000000000), + ( 1.000000000000000000, 0.1650312009201779229, 1.000000000000000000), + ( 1.000000000000000000, 0.1650323245415012685, 1.000000000000000000) ) ) + REPRESENTATION_ITEM ( '' ) SURFACE ( ) ); +#330 = CARTESIAN_POINT ( 'NONE', ( -32.00347813279103093, 32.31159637716974231, -12.27482124481528380 ) ) ; +#331 = CYLINDRICAL_SURFACE ( 'NONE', #309, 5.499999999999996447 ) ; +#332 = CARTESIAN_POINT ( 'NONE', ( -43.00000000000000000, 6.284924945759554404, -12.50000000000000000 ) ) ; +#333 = CARTESIAN_POINT ( 'NONE', ( -34.88087167186577631, 33.45756437772778469, -7.662864697124865287 ) ) ; +#334 = CARTESIAN_POINT ( 'NONE', ( 0.000000000000000000, 45.00000000000000000, 4.500000000000003553 ) ) ; +#335 = CARTESIAN_POINT ( 'NONE', ( 42.51245935571762402, 7.958454404286210426, 10.22895474377726543 ) ) ; +#336 = CARTESIAN_POINT ( 'NONE', ( -25.58861349562032572, 34.92662621701362013, 4.500000000000000888 ) ) ; +#337 = CARTESIAN_POINT ( 'NONE', ( 33.12690805908246716, 40.17524856008240874, 15.85494385505738535 ) ) ; +#338 = ORIENTED_EDGE ( 'NONE', *, *, #2467, .F. ) ; +#339 = CARTESIAN_POINT ( 'NONE', ( -43.47300727646225482, 10.88740696221511328, 13.92728719611389110 ) ) ; +#340 = EDGE_LOOP ( 'NONE', ( #2362, #2069, #2458, #634, #2753 ) ) ; +#341 = CARTESIAN_POINT ( 'NONE', ( -45.50000000000000000, 5.000000000000000000, 0.000000000000000000 ) ) ; +#342 = EDGE_CURVE ( 'NONE', #2735, #594, #2292, .T. ) ; +#343 = CARTESIAN_POINT ( 'NONE', ( -32.65564714380938938, 42.30646467182851467, 15.14364952153608535 ) ) ; +#344 = ORIENTED_EDGE ( 'NONE', *, *, #1581, .F. ) ; +#345 = CARTESIAN_POINT ( 'NONE', ( -44.87938373321212282, 6.802581966636197741, -11.56541359197904306 ) ) ; +#346 = CARTESIAN_POINT ( 'NONE', ( -35.89971384576186608, 32.88406237842249169, -17.79979218800362517 ) ) ; +#347 = VECTOR ( 'NONE', #729, 1000.000000000000000 ) ; +#348 = AXIS2_PLACEMENT_3D ( 'NONE', #2615, #2379, #2405 ) ; +#349 = CARTESIAN_POINT ( 'NONE', ( 43.96825760039332209, 9.448950784602622832, 9.065657051501897712 ) ) ; +#350 = DIRECTION ( 'NONE', ( -0.000000000000000000, -1.000000000000000000, -0.000000000000000000 ) ) ; +#351 = CARTESIAN_POINT ( 'NONE', ( -38.47676016858855519, 25.39902294696122809, -19.02197129286439292 ) ) ; +#352 = ORIENTED_EDGE ( 'NONE', *, *, #595, .F. ) ; +#353 = CARTESIAN_POINT ( 'NONE', ( -44.72738788084878792, 7.244054414485028737, 10.81670229254635629 ) ) ; +#354 = ORIENTED_EDGE ( 'NONE', *, *, #1052, .F. ) ; +#355 = EDGE_LOOP ( 'NONE', ( #1430, #2262, #1987, #1318 ) ) ; +#356 = DIRECTION ( 'NONE', ( 0.000000000000000000, 0.000000000000000000, -1.000000000000000000 ) ) ; +#357 = CYLINDRICAL_SURFACE ( 'NONE', #395, 4.000000000000001776 ) ; +#358 = EDGE_CURVE ( 'NONE', #1823, #1614, #1583, .T. ) ; +#359 = CARTESIAN_POINT ( 'NONE', ( -34.92487634117518525, 33.40639490680176493, -7.639419080906765025 ) ) ; +#360 = ORIENTED_EDGE ( 'NONE', *, *, #2264, .F. ) ; +#361 = CARTESIAN_POINT ( 'NONE', ( -37.50000000000000000, 0.000000000000000000, 12.50000000000000000 ) ) ; +#362 = CARTESIAN_POINT ( 'NONE', ( -34.62647062134031017, 34.56406577910099287, -18.04333830505539993 ) ) ; +#363 = CARTESIAN_POINT ( 'NONE', ( 44.53214698414789297, 7.811132234350230519, 10.20907795478962043 ) ) ; +#364 = CARTESIAN_POINT ( 'NONE', ( 32.85740444909577462, 41.72045992200443010, 9.514080636734924212 ) ) ; +#365 = CARTESIAN_POINT ( 'NONE', ( -40.14276169517929560, 16.09266616533567529, -17.34472462097040690 ) ) ; +#366 = ORIENTED_EDGE ( 'NONE', *, *, #2216, .T. ) ; +#367 = CARTESIAN_POINT ( 'NONE', ( -42.71092435547765831, 7.277204487012230771, 10.73119737958485054 ) ) ; +#368 = ORIENTED_EDGE ( 'NONE', *, *, #2403, .F. ) ; +#369 = ORIENTED_EDGE ( 'NONE', *, *, #2754, .T. ) ; +#370 = DIRECTION ( 'NONE', ( -1.000000000000000000, 0.000000000000000000, 0.000000000000000000 ) ) ; +#371 = FACE_BOUND ( 'NONE', #2277, .T. ) ; +#372 = CARTESIAN_POINT ( 'NONE', ( -37.50000000000000000, 5.000000000000000000, -17.99999999999999645 ) ) ; +#373 = VERTEX_POINT ( 'NONE', #2513 ) ; +#374 = DIRECTION ( 'NONE', ( 0.000000000000000000, 0.000000000000000000, -1.000000000000000000 ) ) ; +#375 = CARTESIAN_POINT ( 'NONE', ( -30.33149636771388558, 33.30663077529035832, -14.22519690359264644 ) ) ; +#376 = EDGE_CURVE ( 'NONE', #1002, #1098, #1741, .T. ) ; +#377 = AXIS2_PLACEMENT_3D ( 'NONE', #1199, #539, #2224 ) ; +#378 = CARTESIAN_POINT ( 'NONE', ( 44.89078164496277168, 6.769476694862829547, 11.65145677386211709 ) ) ; +#379 = CARTESIAN_POINT ( 'NONE', ( 32.65564714380716538, 42.30646467183074577, 9.856350478463367537 ) ) ; +#380 = CARTESIAN_POINT ( 'NONE', ( -41.70775951432999307, 10.72066285937099650, -16.04910501072829376 ) ) ; +#381 = ORIENTED_EDGE ( 'NONE', *, *, #691, .F. ) ; +#382 = CARTESIAN_POINT ( 'NONE', ( -42.99779078280187150, 6.292508293126855001, 12.32001292924796587 ) ) ; +#383 = VERTEX_POINT ( 'NONE', #2085 ) ; +#384 = CARTESIAN_POINT ( 'NONE', ( -37.50000000000000000, 6.000000000000005329, 8.000000000000003553 ) ) ; +#385 = CARTESIAN_POINT ( 'NONE', ( -4.000000000000000000, 24.99999999999999645, 20.50000000000000000 ) ) ; +#386 = CARTESIAN_POINT ( 'NONE', ( 31.94552866371286370, 44.36900610829383140, 12.50000000000000000 ) ) ; +#387 = VERTEX_POINT ( 'NONE', #1035 ) ; +#388 = CARTESIAN_POINT ( 'NONE', ( -37.50000000000000000, 75.00000000000001421, 12.50000000000000000 ) ) ; +#389 = CARTESIAN_POINT ( 'NONE', ( -44.94291777066050031, 6.618047148100451693, 12.71271199270700336 ) ) ; +#390 = EDGE_CURVE ( 'NONE', #2559, #2325, #796, .T. ) ; +#391 = CARTESIAN_POINT ( 'NONE', ( 41.26442097287823429, 17.30225306865500556, 8.207638216924999952 ) ) ; +#392 = CARTESIAN_POINT ( 'NONE', ( -41.50565207264016721, 16.60159655433335857, -16.60053995556925699 ) ) ; +#393 = ORIENTED_EDGE ( 'NONE', *, *, #517, .F. ) ; +#394 = B_SPLINE_CURVE_WITH_KNOTS ( 'NONE', 3, + ( #325, #1182, #941, #1580, #962, #330, #2667, #1384, #514, #1815, #1152, #1423, #2438, #2004 ), + .UNSPECIFIED., .F., .F., + ( 4, 2, 2, 2, 2, 2, 4 ), + ( 0.000000000000000000, 0.0006820525966107297269, 0.001023078894916093669, 0.001364105193221457502, 0.001705131491526821336, 0.002046157789832185603, 0.002728210386442917607 ), + .UNSPECIFIED. ) ; +#395 = AXIS2_PLACEMENT_3D ( 'NONE', #1215, #579, #2019 ) ; +#396 = ADVANCED_FACE ( 'NONE', ( #606 ), #2590, .F. ) ; +#397 = FACE_BOUND ( 'NONE', #1887, .T. ) ; +#398 =( BOUNDED_CURVE ( ) B_SPLINE_CURVE ( 3, ( #2613, #1710, #2565, #645 ), + .UNSPECIFIED., .F., .T. ) + B_SPLINE_CURVE_WITH_KNOTS ( ( 4, 4 ), + ( 4.712388980384689674, 6.283185307179586232 ), + .UNSPECIFIED. ) + CURVE ( ) GEOMETRIC_REPRESENTATION_ITEM ( ) RATIONAL_B_SPLINE_CURVE ( ( 1.000000000000000000, 0.8047378541243649375, 0.8047378541243649375, 1.000000000000000000 ) ) + REPRESENTATION_ITEM ( '' ) ); +#399 = ORIENTED_EDGE ( 'NONE', *, *, #2701, .T. ) ; +#400 = FACE_OUTER_BOUND ( 'NONE', #1015, .T. ) ; +#401 = DIRECTION ( 'NONE', ( -0.3348729792147798201, -0.9422632794457278527, 0.000000000000000000 ) ) ; +#402 = FACE_OUTER_BOUND ( 'NONE', #1019, .T. ) ; +#403 = ORIENTED_EDGE ( 'NONE', *, *, #1921, .T. ) ; +#404 = CARTESIAN_POINT ( 'NONE', ( -35.86915977639390718, 32.97280677233769808, -6.532393833667063276 ) ) ; +#405 = DIRECTION ( 'NONE', ( 1.000000000000000000, 0.000000000000000000, -0.000000000000000000 ) ) ; +#406 = AXIS2_PLACEMENT_3D ( 'NONE', #2355, #432, #1082 ) ; +#407 = CARTESIAN_POINT ( 'NONE', ( 37.50000000000000000, 5.000000000000004441, -9.749999999999998224 ) ) ; +#408 = CARTESIAN_POINT ( 'NONE', ( 33.54851438729055246, 39.71312885736116982, 8.204626120998362637 ) ) ; +#409 = CARTESIAN_POINT ( 'NONE', ( -44.40633062024040356, 8.176566272779744793, -15.10588013400562168 ) ) ; +#410 = VERTEX_POINT ( 'NONE', #2269 ) ; +#411 = CARTESIAN_POINT ( 'NONE', ( 37.50000000000000000, 0.000000000000000000, 9.749999999999998224 ) ) ; +#412 = ORIENTED_EDGE ( 'NONE', *, *, #1753, .T. ) ; +#413 = EDGE_CURVE ( 'NONE', #1838, #119, #2246, .T. ) ; +#414 = CARTESIAN_POINT ( 'NONE', ( -30.07457024476144269, 32.68049414076453729, -12.37283457400364739 ) ) ; +#415 = CARTESIAN_POINT ( 'NONE', ( -32.80386453857610718, 33.68702801529958180, -9.627364753122026997 ) ) ; +#416 = VERTEX_POINT ( 'NONE', #2061 ) ; +#417 = CARTESIAN_POINT ( 'NONE', ( -36.91745922585356965, 29.92801760975707026, -6.957240472960338096 ) ) ; +#418 = CARTESIAN_POINT ( 'NONE', ( -44.90380467601645620, 6.731651258784808967, 13.24295527983305654 ) ) ; +#419 =( BOUNDED_CURVE ( ) B_SPLINE_CURVE ( 3, ( #1416, #2234, #315, #535 ), + .UNSPECIFIED., .F., .T. ) + B_SPLINE_CURVE_WITH_KNOTS ( ( 4, 4 ), + ( 4.304835433566710279, 4.712388980384689674 ), + .UNSPECIFIED. ) + CURVE ( ) GEOMETRIC_REPRESENTATION_ITEM ( ) RATIONAL_B_SPLINE_CURVE ( ( 1.000000000000000000, 0.9862061738295022639, 0.9862061738295022639, 1.000000000000000000 ) ) + REPRESENTATION_ITEM ( '' ) ); +#420 = DIRECTION ( 'NONE', ( -1.000000000000000000, 0.000000000000000000, 0.000000000000000000 ) ) ; +#421 = CARTESIAN_POINT ( 'NONE', ( 40.14688991242650218, 20.54812567066736406, 6.169177601812957157 ) ) ; +#422 = TOROIDAL_SURFACE ( 'NONE', #22, 4.499999999999996447, 1.000000000000000000 ) ; +#423 = CARTESIAN_POINT ( 'NONE', ( 42.99999999999999289, 6.284924945759606807, 15.72182540694797659 ) ) ; +#424 = EDGE_LOOP ( 'NONE', ( #2594, #2695 ) ) ; +#425 = CARTESIAN_POINT ( 'NONE', ( 37.50000000000000000, 5.000000000000000000, 12.50000000000000000 ) ) ; +#426 = ORIENTED_EDGE ( 'NONE', *, *, #1714, .F. ) ; +#427 = CARTESIAN_POINT ( 'NONE', ( 31.94552866371286370, 44.36900610829383140, 12.50000000000000000 ) ) ; +#428 = DIRECTION ( 'NONE', ( 0.000000000000000000, 0.000000000000000000, -1.000000000000000000 ) ) ; +#429 = ADVANCED_FACE ( 'NONE', ( #2255 ), #2444, .F. ) ; +#430 = CARTESIAN_POINT ( 'NONE', ( -32.16910211311316914, 32.80059666762780779, -13.85738956026218460 ) ) ; +#431 = ORIENTED_EDGE ( 'NONE', *, *, #1942, .T. ) ; +#432 = DIRECTION ( 'NONE', ( 0.000000000000000000, -1.000000000000000000, 0.000000000000000000 ) ) ; +#433 = CARTESIAN_POINT ( 'NONE', ( -42.96469508733385823, 6.406112403811332179, 13.12865446755100507 ) ) ; +#434 = EDGE_CURVE ( 'NONE', #1369, #119, #2100, .T. ) ; +#435 = CARTESIAN_POINT ( 'NONE', ( 44.85957031200506862, 6.860130113013480191, 13.55895294178186106 ) ) ; +#436 = DIRECTION ( 'NONE', ( 0.000000000000000000, 0.000000000000000000, -1.000000000000000000 ) ) ; +#437 = FACE_OUTER_BOUND ( 'NONE', #1237, .T. ) ; +#438 = DIRECTION ( 'NONE', ( 1.000000000000000000, -4.625929269271486900E-15, 0.000000000000000000 ) ) ; +#439 = CARTESIAN_POINT ( 'NONE', ( -43.00000000000000000, 6.284924945760107740, 12.41000645670897207 ) ) ; +#440 = VERTEX_POINT ( 'NONE', #1846 ) ; +#441 = AXIS2_PLACEMENT_3D ( 'NONE', #1402, #2433, #1576 ) ; +#442 = AXIS2_PLACEMENT_3D ( 'NONE', #2665, #303, #731 ) ; +#443 = AXIS2_PLACEMENT_3D ( 'NONE', #480, #32, #230 ) ; +#444 = CARTESIAN_POINT ( 'NONE', ( -37.50000000000000000, 5.000000000000004441, -12.50000000000000000 ) ) ; +#445 = CARTESIAN_POINT ( 'NONE', ( -33.43771148342548827, 33.97047127824377100, -16.20971450554219828 ) ) ; +#446 = ORIENTED_EDGE ( 'NONE', *, *, #979, .T. ) ; +#447 = EDGE_CURVE ( 'NONE', #594, #851, #969, .T. ) ; +#448 = CARTESIAN_POINT ( 'NONE', ( -43.68618486730048289, 10.26823195585920345, -12.92259534589628700 ) ) ; +#449 = CARTESIAN_POINT ( 'NONE', ( -45.50000000000000000, 5.000000000000000000, 20.50000000000000000 ) ) ; +#450 = ORIENTED_EDGE ( 'NONE', *, *, #138, .T. ) ; +#451 = CARTESIAN_POINT ( 'NONE', ( -44.94552866371285660, 6.610463800732931716, -12.50000000000000000 ) ) ; +#452 = CIRCLE ( 'NONE', #2730, 2.750000000000002665 ) ; +#453 = LINE ( 'NONE', #64, #2418 ) ; +#454 = CARTESIAN_POINT ( 'NONE', ( -31.94552866371286370, 44.36900610829383140, 12.50000000000000000 ) ) ; +#455 = CARTESIAN_POINT ( 'NONE', ( -43.13581435095201755, 11.86678491173436534, -11.42552890006263411 ) ) ; +#456 = CARTESIAN_POINT ( 'NONE', ( 0.000000000000000000, 65.00000000000000000, 4.500000000000000888 ) ) ; +#457 = FACE_BOUND ( 'NONE', #2495, .T. ) ; +#458 = DIRECTION ( 'NONE', ( 0.000000000000000000, 0.000000000000000000, -1.000000000000000000 ) ) ; +#459 = CARTESIAN_POINT ( 'NONE', ( -32.29055821324739384, 33.06974159880335407, -14.26733026968242868 ) ) ; +#460 = CARTESIAN_POINT ( 'NONE', ( 34.50846982257009188, 36.92493517148989923, 17.21047068398527102 ) ) ; +#461 = ORIENTED_EDGE ( 'NONE', *, *, #1610, .T. ) ; +#462 = CARTESIAN_POINT ( 'NONE', ( -36.17477690138717605, 29.71314995735622944, -7.142824459707864726 ) ) ; +#463 = CARTESIAN_POINT ( 'NONE', ( -43.08988301295879353, 12.00019263240737644, 14.48836083989945855 ) ) ; +#464 = CARTESIAN_POINT ( 'NONE', ( 44.89078164496277878, 6.769476694862786914, 13.34854322613787581 ) ) ; +#465 = LINE ( 'NONE', #77, #2196 ) ; +#466 = DIRECTION ( 'NONE', ( -0.000000000000000000, -0.000000000000000000, -1.000000000000000000 ) ) ; +#467 = ADVANCED_FACE ( 'NONE', ( #510 ), #947, .F. ) ; +#468 = EDGE_LOOP ( 'NONE', ( #1, #835, #755, #1641 ) ) ; +#469 = VECTOR ( 'NONE', #1579, 1000.000000000000000 ) ; +#470 =( NAMED_UNIT ( * ) SI_UNIT ( $, .STERADIAN. ) SOLID_ANGLE_UNIT ( ) ); +#471 = CARTESIAN_POINT ( 'NONE', ( -32.60311442061208709, 42.45904613731469368, 9.619517159301437914 ) ) ; +#472 = DIRECTION ( 'NONE', ( -0.000000000000000000, -0.000000000000000000, 1.000000000000000000 ) ) ; +#473 = CARTESIAN_POINT ( 'NONE', ( 43.67474508509675246, 10.30145884050452310, 11.70830923837393200 ) ) ; +#474 = CARTESIAN_POINT ( 'NONE', ( -34.67425274517010081, 33.65279005882512564, -17.21963221568602975 ) ) ; +#475 = CARTESIAN_POINT ( 'NONE', ( -34.73009560828618447, 34.67215538705777078, 17.30582513608350581 ) ) ; +#476 = ORIENTED_EDGE ( 'NONE', *, *, #935, .F. ) ; +#477 = CARTESIAN_POINT ( 'NONE', ( -31.94357522606386013, 37.26341713563340363, -13.02528983019722730 ) ) ; +#478 = APPLICATION_CONTEXT ( 'automotive_design' ) ; +#479 = CARTESIAN_POINT ( 'NONE', ( -32.53579838877607955, 33.42734138321499415, -10.12951273671701813 ) ) ; +#480 = CARTESIAN_POINT ( 'NONE', ( -33.03257378525533738, 31.99619020741757680, 4.500000000000000888 ) ) ; +#481 = FACE_OUTER_BOUND ( 'NONE', #2087, .T. ) ; +#482 = VECTOR ( 'NONE', #1660, 1000.000000000000000 ) ; +#483 = CARTESIAN_POINT ( 'NONE', ( -43.00000000007026557, 12.26125813586037872, -12.25525971688855975 ) ) ; +#484 = VERTEX_POINT ( 'NONE', #2672 ) ; +#485 = EDGE_CURVE ( 'NONE', #1459, #2587, #1765, .T. ) ; +#486 = CARTESIAN_POINT ( 'NONE', ( -35.80901780882527419, 33.14748931286850109, -18.45029627805127959 ) ) ; +#487 = CARTESIAN_POINT ( 'NONE', ( -32.15342044700667401, 43.76518374714815707, 10.81466330593661240 ) ) ; +#488 = CARTESIAN_POINT ( 'NONE', ( -44.94552866371285660, 6.610463800732933493, -7.324346477178758974 ) ) ; +#489 = CARTESIAN_POINT ( 'NONE', ( 44.07774513821160411, 9.130943874690144568, 15.75167402737496403 ) ) ; +#490 = AXIS2_PLACEMENT_3D ( 'NONE', #456, #660, #1528 ) ; +#491 = CARTESIAN_POINT ( 'NONE', ( -32.25272515909306748, 33.00465678385931056, -14.16221685464599034 ) ) ; +#492 = CARTESIAN_POINT ( 'NONE', ( -36.06038663569781022, 30.10580538338211909, 17.85684972154064454 ) ) ; +#493 = AXIS2_PLACEMENT_3D ( 'NONE', #858, #2357, #1288 ) ; +#494 = CARTESIAN_POINT ( 'NONE', ( -30.10500962285524906, 32.75500483102697302, -13.14968065242663897 ) ) ; +#495 = CARTESIAN_POINT ( 'NONE', ( -32.16915092262876641, 32.80074319802087501, -11.14240224248994338 ) ) ; +#496 = DIRECTION ( 'NONE', ( -0.000000000000000000, -0.000000000000000000, -1.000000000000000000 ) ) ; +#497 = CARTESIAN_POINT ( 'NONE', ( 0.000000000000000000, 24.99999999999999645, 9.500000000000001776 ) ) ; +#498 = CARTESIAN_POINT ( 'NONE', ( -35.86915977639390718, 32.97280677233769808, -20.50000000000000000 ) ) ; +#499 = CARTESIAN_POINT ( 'NONE', ( 17.22413793103449464, 15.00000000000000000, -0.5000000000000004441 ) ) ; +#500 = AXIS2_PLACEMENT_3D ( 'NONE', #267, #713, #1126 ) ; +#501 = CARTESIAN_POINT ( 'NONE', ( 32.00000000000000000, 44.04346725332046475, 12.50000000000000000 ) ) ; +#502 = CARTESIAN_POINT ( 'NONE', ( -36.78005168385927703, 27.63548691358504072, 7.000000000000001776 ) ) ; +#503 = CARTESIAN_POINT ( 'NONE', ( 43.29723134155775455, 11.39794873719436552, 13.99145351984449270 ) ) ; +#504 = EDGE_CURVE ( 'NONE', #1677, #1315, #2220, .T. ) ; +#505 = CARTESIAN_POINT ( 'NONE', ( -32.14518621856249325, 32.72879920981659296, -13.75537618510426086 ) ) ; +#506 = CARTESIAN_POINT ( 'NONE', ( -44.53214698414789297, 7.811132234350179893, 14.79092204521037957 ) ) ; +#507 = DIRECTION ( 'NONE', ( -1.000000000000000000, 0.000000000000000000, 0.000000000000000000 ) ) ; +#508 = CARTESIAN_POINT ( 'NONE', ( -34.62068687147460366, 33.69417232600314094, -7.812778574186847180 ) ) ; +#509 = CARTESIAN_POINT ( 'NONE', ( 40.72182540694797126, 14.10497510537461352, 7.000000000000000888 ) ) ; +#510 = FACE_OUTER_BOUND ( 'NONE', #340, .T. ) ; +#511 = ORIENTED_EDGE ( 'NONE', *, *, #1105, .F. ) ; +#512 =( BOUNDED_SURFACE ( ) B_SPLINE_SURFACE ( 3, 2, ( + ( #100, #1363, #2441 ), + ( #1155, #944, #308 ), + ( #1806, #1387, #529 ), + ( #2243, #2389, #2272 ), + ( #351, #2302, #1435 ), + ( #2509, #1683, #2123 ), + ( #2287, #1882, #2732 ), + ( #145, #2535, #1046 ), + ( #2479, #392, #365 ), + ( #615, #1236, #999 ), + ( #1031, #1223, #190 ), + ( #1465, #984, #380 ), + ( #832, #587, #2715 ), + ( #1669, #161, #2093 ), + ( #2078, #1898, #801 ), + ( #817, #783, #1014 ), + ( #409, #2491, #1479 ), + ( #2521, #2317, #1209 ), + ( #2331, #2745, #767 ), + ( #1655, #174, #1449 ), + ( #2065, #602, #1249 ), + ( #1837, #2108, #1263 ), + ( #1850, #2689, #1625 ), + ( #558, #2702, #1417 ), + ( #1638, #573, #1865 ), + ( #659, #455, #1494 ), + ( #2402, #690, #246 ), + ( #1727, #2550, #2360 ), + ( #216, #483, #1059 ), + ( #51, #1525, #1549 ) ), + .UNSPECIFIED., .F., .F., .T. ) + B_SPLINE_SURFACE_WITH_KNOTS ( ( 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4 ), + ( 3, 3 ), + ( 4.304835433566708502, 4.552129167768318219, 4.799422901969927935, 5.046716636171537651, 5.294010370373147367, 5.541304104574757083, 5.664950971675562386, 5.788597838776366800, 5.912244705877171214, 5.974068139427574309, 6.035891572977976516, 6.097715006528378723, 6.159538440078781818, 6.221361873629184025, 6.283185307179586232 ), + ( 0.000000000000000000, 1.000000000000000000 ), + .UNSPECIFIED. ) + GEOMETRIC_REPRESENTATION_ITEM ( ) RATIONAL_B_SPLINE_SURFACE ( ( + ( 1.000000000000000000, 0.8290880361187457082, 1.000000000000000000), + ( 1.000000000000000000, 0.8075124374855047193, 1.000000000000000000), + ( 1.000000000000000000, 0.7839358397903772868, 1.000000000000000000), + ( 1.000000000000000000, 0.7332210067122884034, 1.000000000000000000), + ( 1.000000000000000000, 0.7060804060492770207, 1.000000000000000000), + ( 1.000000000000000000, 0.6487707199110942513, 1.000000000000000000), + ( 1.000000000000000000, 0.6185992827454469545, 1.000000000000000000), + ( 1.000000000000000000, 0.5559131927632718906, 1.000000000000000000), + ( 1.000000000000000000, 0.5233918139855477936, 1.000000000000000000), + ( 1.000000000000000000, 0.4569611680055477576, 1.000000000000000000), + ( 1.000000000000000000, 0.4230301067180500252, 1.000000000000000000), + ( 1.000000000000000000, 0.3722889375816920698, 1.000000000000000000), + ( 1.000000000000000000, 0.3554073528898792911, 1.000000000000000000), + ( 1.000000000000000000, 0.3220670159444026237, 1.000000000000000000), + ( 1.000000000000000000, 0.3056035870504272278, 1.000000000000000000), + ( 1.000000000000000000, 0.2736703402485362036, 1.000000000000000000), + ( 1.000000000000000000, 0.2581920883499866926, 1.000000000000000000), + ( 1.000000000000000000, 0.2364545543615540202, 1.000000000000000000), + ( 1.000000000000000000, 0.2294594316545695289, 1.000000000000000000), + ( 1.000000000000000000, 0.2161570347704336315, 1.000000000000000000), + ( 1.000000000000000000, 0.2098496721007437893, 1.000000000000000000), + ( 1.000000000000000000, 0.1981596860163650220, 1.000000000000000000), + ( 1.000000000000000000, 0.1927776193291231566, 1.000000000000000000), + ( 1.000000000000000000, 0.1832210536906958565, 1.000000000000000000), + ( 1.000000000000000000, 0.1790482828115478875, 1.000000000000000000), + ( 1.000000000000000000, 0.1722066456629600117, 1.000000000000000000), + ( 1.000000000000000000, 0.1695406270279364858, 1.000000000000000000), + ( 1.000000000000000000, 0.1659522367849540214, 1.000000000000000000), + ( 1.000000000000000000, 0.1650295672437424033, 1.000000000000000000), + ( 1.000000000000000000, 0.1650323245415012685, 1.000000000000000000) ) ) + REPRESENTATION_ITEM ( '' ) SURFACE ( ) ); +#513 = CARTESIAN_POINT ( 'NONE', ( -32.27750898416690006, 43.40476818712910756, 10.40559821995241663 ) ) ; +#514 = CARTESIAN_POINT ( 'NONE', ( -32.00351250389886104, 32.31169563575704018, -12.72592212208823526 ) ) ; +#515 = CIRCLE ( 'NONE', #1368, 2.750000000000002665 ) ; +#516 = CARTESIAN_POINT ( 'NONE', ( -43.51720173353851351, 10.75904401780500486, 13.24358781161986798 ) ) ; +#517 = EDGE_CURVE ( 'NONE', #383, #416, #1603, .T. ) ; +#518 = CARTESIAN_POINT ( 'NONE', ( -30.14881835579600633, 32.86308127774037757, -13.52570216091755029 ) ) ; +#519 = EDGE_CURVE ( 'NONE', #652, #1700, #958, .T. ) ; +#520 = CARTESIAN_POINT ( 'NONE', ( -33.51941604685471532, 33.99137022734336000, -8.696963810950791185 ) ) ; +#521 = CARTESIAN_POINT ( 'NONE', ( 45.50000000000002132, 5.000000000000000000, -0.5000000000000004441 ) ) ; +#522 = FACE_OUTER_BOUND ( 'NONE', #804, .T. ) ; +#523 = ORIENTED_EDGE ( 'NONE', *, *, #1994, .F. ) ; +#524 = ORIENTED_EDGE ( 'NONE', *, *, #2043, .T. ) ; +#525 = CARTESIAN_POINT ( 'NONE', ( -32.00000000000147793, 44.21079393475268660, 12.10821283959214867 ) ) ; +#526 = DIRECTION ( 'NONE', ( 0.000000000000000000, -0.000000000000000000, 1.000000000000000000 ) ) ; +#527 = CARTESIAN_POINT ( 'NONE', ( -33.12690805908247427, 40.17524856008518697, 15.85494385505739245 ) ) ; +#528 = ADVANCED_FACE ( 'NONE', ( #522 ), #1587, .F. ) ; +#529 = CARTESIAN_POINT ( 'NONE', ( -36.17477690138199620, 29.71314995735627562, -17.85717554029130127 ) ) ; +#530 = CARTESIAN_POINT ( 'NONE', ( -31.95322838119606956, 35.56626065605323106, -11.60005878369882204 ) ) ; +#531 = CARTESIAN_POINT ( 'NONE', ( -35.24939283215580588, 32.88961845997135214, -7.480968100045668479 ) ) ; +#532 = AXIS2_PLACEMENT_3D ( 'NONE', #933, #90, #2639 ) ; +#533 = CARTESIAN_POINT ( 'NONE', ( -35.49711784373716483, 33.72827315773044887, -17.64949409743674735 ) ) ; +#534 = ADVANCED_FACE ( 'NONE', ( #1378 ), #2601, .T. ) ; +#535 = CARTESIAN_POINT ( 'NONE', ( -37.50000000000000000, 25.16419609954000691, -17.99999999999999645 ) ) ; +#536 = ORIENTED_EDGE ( 'NONE', *, *, #1390, .T. ) ; +#537 = CARTESIAN_POINT ( 'NONE', ( -41.32601150491552033, 17.12336316791691360, 6.657585757108619440 ) ) ; +#538 = CIRCLE ( 'NONE', #2110, 1.750000000000000888 ) ; +#539 = DIRECTION ( 'NONE', ( -0.000000000000000000, -1.000000000000000000, -0.000000000000000000 ) ) ; +#540 = DIRECTION ( 'NONE', ( 0.000000000000000000, 0.000000000000000000, -1.000000000000000000 ) ) ; +#541 = DIRECTION ( 'NONE', ( -0.000000000000000000, -1.000000000000000000, -0.000000000000000000 ) ) ; +#542 = DIRECTION ( 'NONE', ( -0.000000000000000000, -0.000000000000000000, 1.000000000000000000 ) ) ; +#543 = CARTESIAN_POINT ( 'NONE', ( 43.29946974291465267, 11.39144729317238713, 13.87817639135612779 ) ) ; +#544 = EDGE_CURVE ( 'NONE', #839, #1281, #706, .T. ) ; +#545 = CARTESIAN_POINT ( 'NONE', ( -31.94490745452773695, 34.79553597278510324, -8.587371876224860756 ) ) ; +#546 = CARTESIAN_POINT ( 'NONE', ( 40.85494385521288052, 13.64803341803775005, 16.87309194081363017 ) ) ; +#547 = ORIENTED_EDGE ( 'NONE', *, *, #632, .F. ) ; +#548 = SHAPE_DEFINITION_REPRESENTATION ( #2627, #781 ) ; +#549 = CARTESIAN_POINT ( 'NONE', ( -44.89078164496267220, 6.769476694863037380, 11.65145677386212597 ) ) ; +#550 = VERTEX_POINT ( 'NONE', #2617 ) ; +#551 = DIRECTION ( 'NONE', ( 0.000000000000000000, 0.000000000000000000, 1.000000000000000000 ) ) ; +#552 = DIRECTION ( 'NONE', ( -0.000000000000000000, -0.000000000000000000, -1.000000000000000000 ) ) ; +#553 = LINE ( 'NONE', #1665, #2156 ) ; +#554 = CARTESIAN_POINT ( 'NONE', ( 37.50000000000000000, 5.000000000000000000, 12.50000000000000000 ) ) ; +#555 = CARTESIAN_POINT ( 'NONE', ( -35.49391820253964624, 33.72397523779684292, -18.35380280381703955 ) ) ; +#556 = CARTESIAN_POINT ( 'NONE', ( 43.65830555055399032, 10.34920752207618122, 12.54874507021277807 ) ) ; +#557 = CARTESIAN_POINT ( 'NONE', ( -34.83188052505340693, 34.42191729793909616, -6.876150094621122477 ) ) ; +#558 = CARTESIAN_POINT ( 'NONE', ( -44.85875296978372972, 6.862504086155303717, -13.56700365951409815 ) ) ; +#559 = ORIENTED_EDGE ( 'NONE', *, *, #1267, .T. ) ; +#560 = CARTESIAN_POINT ( 'NONE', ( -43.65830555055534745, 10.34920752207009009, 12.54874507020919161 ) ) ; +#561 = EDGE_LOOP ( 'NONE', ( #2182, #2288, #2538, #1965 ) ) ; +#562 = ORIENTED_EDGE ( 'NONE', *, *, #544, .T. ) ; +#563 = CARTESIAN_POINT ( 'NONE', ( -37.50000000000000000, 75.00000000000001421, 17.99999999999999645 ) ) ; +#564 = EDGE_CURVE ( 'NONE', #1962, #887, #912, .T. ) ; +#565 = DIRECTION ( 'NONE', ( 1.000000000000000000, 0.000000000000000000, 0.000000000000000000 ) ) ; +#566 = ORIENTED_EDGE ( 'NONE', *, *, #1427, .F. ) ; +#567 = CARTESIAN_POINT ( 'NONE', ( -44.80934957045266742, 7.005996420292145643, -11.16968940606473737 ) ) ; +#568 = CARTESIAN_POINT ( 'NONE', ( -32.51580311285691494, 35.24081814342464014, -14.90728475592333346 ) ) ; +#569 = AXIS2_PLACEMENT_3D ( 'NONE', #1087, #2180, #1524 ) ; +#570 = CIRCLE ( 'NONE', #493, 1.750000000000000888 ) ; +#571 = CARTESIAN_POINT ( 'NONE', ( 43.51720173353851351, 10.75904401780432806, 11.75641218838013202 ) ) ; +#572 = CARTESIAN_POINT ( 'NONE', ( 33.12690805908301428, 40.17524856008519407, 9.145056144941799303 ) ) ; +#573 = CARTESIAN_POINT ( 'NONE', ( -43.24436591354658077, 11.55149654489924238, -11.18404672621899110 ) ) ; +#574 = ORIENTED_EDGE ( 'NONE', *, *, #651, .T. ) ; +#575 = CARTESIAN_POINT ( 'NONE', ( -44.27828862574268243, 8.548464662501777056, 9.623516448636951992 ) ) ; +#576 = EDGE_LOOP ( 'NONE', ( #360, #1550 ) ) ; +#577 = ORIENTED_EDGE ( 'NONE', *, *, #1892, .F. ) ; +#578 = PLANE ( 'NONE', #1040 ) ; +#579 = DIRECTION ( 'NONE', ( -0.000000000000000000, -0.000000000000000000, -1.000000000000000000 ) ) ; +#580 = CARTESIAN_POINT ( 'NONE', ( 17.22413793103449464, 10.00000000000000000, 4.500000000000000888 ) ) ; +#581 = EDGE_CURVE ( 'NONE', #254, #1520, #709, .T. ) ; +#582 = EDGE_LOOP ( 'NONE', ( #577, #164 ) ) ; +#583 = CARTESIAN_POINT ( 'NONE', ( -42.92657441282921127, 6.536965231181891767, -11.59715074964191750 ) ) ; +#584 = CARTESIAN_POINT ( 'NONE', ( -30.62935254936612139, 33.79555764238799043, -14.82952189107471597 ) ) ; +#585 = CARTESIAN_POINT ( 'NONE', ( 43.08855886698587057, 12.00403861870643496, 13.39448169393815036 ) ) ; +#586 = CARTESIAN_POINT ( 'NONE', ( 40.25632870800386343, 15.70283663275118258, 7.726926205486392973 ) ) ; +#587 = CARTESIAN_POINT ( 'NONE', ( -43.26390430068227033, 11.49474723588365599, -14.04725606519312997 ) ) ; +#588 = EDGE_LOOP ( 'NONE', ( #1018, #1468, #2109, #616, #338 ) ) ; +#589 =( BOUNDED_CURVE ( ) B_SPLINE_CURVE ( 3, ( #1849, #114, #970, #983 ), + .UNSPECIFIED., .F., .F. ) + B_SPLINE_CURVE_WITH_KNOTS ( ( 4, 4 ), + ( 0.000000000000000000, 1.570796326794896780 ), + .UNSPECIFIED. ) + CURVE ( ) GEOMETRIC_REPRESENTATION_ITEM ( ) RATIONAL_B_SPLINE_CURVE ( ( 1.000000000000000000, 0.8047378541243649375, 0.8047378541243649375, 1.000000000000000000 ) ) + REPRESENTATION_ITEM ( '' ) ); +#590 = ORIENTED_EDGE ( 'NONE', *, *, #23, .F. ) ; +#591 = DIRECTION ( 'NONE', ( -0.000000000000000000, -1.000000000000000000, -0.000000000000000000 ) ) ; +#592 = DIRECTION ( 'NONE', ( -0.000000000000000000, -1.000000000000000000, -0.000000000000000000 ) ) ; +#593 = CARTESIAN_POINT ( 'NONE', ( 44.94552866371285660, 6.610463800732987671, 12.50000000000000000 ) ) ; +#594 = VERTEX_POINT ( 'NONE', #1568 ) ; +#595 = EDGE_CURVE ( 'NONE', #290, #373, #2051, .T. ) ; +#596 = CARTESIAN_POINT ( 'NONE', ( -43.00000000000000000, 6.284924945760252513, -12.38665702615338127 ) ) ; +#597 = CARTESIAN_POINT ( 'NONE', ( -43.00000000005574918, 12.26125813590357794, 12.30585011635637116 ) ) ; +#598 = EDGE_CURVE ( 'NONE', #2761, #2543, #894, .T. ) ; +#599 = VECTOR ( 'NONE', #2655, 1000.000000000000000 ) ; +#600 = CARTESIAN_POINT ( 'NONE', ( 44.94552866371287791, 6.610463800732935269, 12.39364399429249808 ) ) ; +#601 = CARTESIAN_POINT ( 'NONE', ( -43.00000000000000000, 6.284924945759544634, -12.50000000000000000 ) ) ; +#602 = CARTESIAN_POINT ( 'NONE', ( -43.55646050725455609, 10.64501678178302768, -11.20697888771249318 ) ) ; +#603 = VERTEX_POINT ( 'NONE', #2603 ) ; +#604 = DIRECTION ( 'NONE', ( -0.000000000000000000, -0.000000000000000000, -1.000000000000000000 ) ) ; +#605 = ORIENTED_EDGE ( 'NONE', *, *, #1406, .F. ) ; +#606 = FACE_OUTER_BOUND ( 'NONE', #468, .T. ) ; +#607 = CARTESIAN_POINT ( 'NONE', ( 0.000000000000000000, 45.00000000000000000, 4.500000000000000888 ) ) ; +#608 = DIRECTION ( 'NONE', ( -0.000000000000000000, -1.000000000000000000, -0.000000000000000000 ) ) ; +#609 = EDGE_LOOP ( 'NONE', ( #1502, #1578, #2130, #2084 ) ) ; +#610 = CARTESIAN_POINT ( 'NONE', ( -41.85058052292311004, 10.23041621433557680, -9.127488232614899388 ) ) ; +#611 = CARTESIAN_POINT ( 'NONE', ( -44.89078164496277168, 6.769476694862777144, 13.34854322613788291 ) ) ; +#612 = CARTESIAN_POINT ( 'NONE', ( 42.96469508733384401, 6.406112403811317968, 13.12865446755109033 ) ) ; +#613 = CARTESIAN_POINT ( 'NONE', ( 32.55641871737685733, 42.13350728233953646, 10.06266836556244826 ) ) ; +#614 = ADVANCED_FACE ( 'NONE', ( #1124 ), #1523, .F. ) ; +#615 = CARTESIAN_POINT ( 'NONE', ( -42.46419766629936277, 13.81749775803288749, -17.63686523080132673 ) ) ; +#616 = ORIENTED_EDGE ( 'NONE', *, *, #952, .T. ) ; +#617 = AXIS2_PLACEMENT_3D ( 'NONE', #1037, #197, #2139 ) ; +#618 = DIRECTION ( 'NONE', ( -1.000000000000000000, 0.000000000000000000, 0.000000000000000000 ) ) ; +#619 = VECTOR ( 'NONE', #496, 1000.000000000000000 ) ; +#620 = VERTEX_POINT ( 'NONE', #2631 ) ; +#621 = CARTESIAN_POINT ( 'NONE', ( -30.10461952914602080, 32.75404730845718149, -11.85447970338051071 ) ) ; +#622 = DIRECTION ( 'NONE', ( 0.000000000000000000, -1.000000000000000000, 0.000000000000000000 ) ) ; +#623 = ORIENTED_EDGE ( 'NONE', *, *, #1801, .F. ) ; +#624 = CARTESIAN_POINT ( 'NONE', ( -43.26390430068434512, 11.49474723587444558, -10.95274393480526243 ) ) ; +#625 = CARTESIAN_POINT ( 'NONE', ( -43.00000000000000000, 12.26125813606935644, 12.49999999999993783 ) ) ; +#626 = CIRCLE ( 'NONE', #1611, 2.750000000000002665 ) ; +#627 = FACE_OUTER_BOUND ( 'NONE', #2486, .T. ) ; +#628 = CARTESIAN_POINT ( 'NONE', ( 32.27750898416623215, 43.40476818713106866, 10.40559821995239886 ) ) ; +#629 = CARTESIAN_POINT ( 'NONE', ( -37.50000000000000000, 5.000000000000000000, 8.000000000000003553 ) ) ; +#630 = VERTEX_POINT ( 'NONE', #1748 ) ; +#631 = VECTOR ( 'NONE', #350, 1000.000000000000000 ) ; +#632 = EDGE_CURVE ( 'NONE', #2068, #2620, #2635, .T. ) ; +#633 = CARTESIAN_POINT ( 'NONE', ( -10.88337182448036522, 14.37644341801383874, 79.70475956827036157 ) ) ; +#634 = ORIENTED_EDGE ( 'NONE', *, *, #1189, .F. ) ; +#635 = ADVANCED_FACE ( 'NONE', ( #1976 ), #56, .F. ) ; +#636 = CARTESIAN_POINT ( 'NONE', ( -44.94552866371285660, 6.610463800732931716, -0.4999999999999935052 ) ) ; +#637 = CARTESIAN_POINT ( 'NONE', ( -33.72269196666496782, 34.00889032105771292, -8.494423585908723595 ) ) ; +#638 = CARTESIAN_POINT ( 'NONE', ( -31.20145246549144957, 34.38444387679342640, -15.65651356072780764 ) ) ; +#639 = ORIENTED_EDGE ( 'NONE', *, *, #2247, .T. ) ; +#640 = DIRECTION ( 'NONE', ( -1.000000000000000000, 0.000000000000000000, -0.000000000000000000 ) ) ; +#641 = ORIENTED_EDGE ( 'NONE', *, *, #963, .F. ) ; +#642 = CARTESIAN_POINT ( 'NONE', ( 42.91187591077665786, 6.587419232237142985, 13.48473243242447417 ) ) ; +#643 = LINE ( 'NONE', #1508, #1246 ) ; +#644 = CIRCLE ( 'NONE', #2747, 0.9999999999999987788 ) ; +#645 = CARTESIAN_POINT ( 'NONE', ( -43.00000000000000000, 6.284924945759544634, 12.50000000000000000 ) ) ; +#646 = CARTESIAN_POINT ( 'NONE', ( -37.50000000000000000, 75.00000000000001421, 7.000000000000004441 ) ) ; +#647 = ORIENTED_EDGE ( 'NONE', *, *, #1938, .F. ) ; +#648 = ADVANCED_FACE ( 'NONE', ( #481 ), #1784, .F. ) ; +#649 = DIRECTION ( 'NONE', ( 0.000000000000000000, 0.000000000000000000, -1.000000000000000000 ) ) ; +#650 = CARTESIAN_POINT ( 'NONE', ( -34.53780195468802816, 34.63303889978092087, -17.14300095962763848 ) ) ; +#651 = EDGE_CURVE ( 'NONE', #1698, #116, #1073, .T. ) ; +#652 = VERTEX_POINT ( 'NONE', #2359 ) ; +#653 = FACE_BOUND ( 'NONE', #655, .T. ) ; +#654 = DIRECTION ( 'NONE', ( 0.000000000000000000, 0.000000000000000000, -1.000000000000000000 ) ) ; +#655 = EDGE_LOOP ( 'NONE', ( #2445, #547 ) ) ; +#656 = CARTESIAN_POINT ( 'NONE', ( 43.29946974291509321, 11.39144729316962135, 11.12182360864258435 ) ) ; +#657 = CARTESIAN_POINT ( 'NONE', ( 0.000000000000000000, 0.000000000000000000, -20.50000000000000000 ) ) ; +#658 = DIRECTION ( 'NONE', ( -1.000000000000000000, 0.000000000000000000, 0.000000000000000000 ) ) ; +#659 = CARTESIAN_POINT ( 'NONE', ( -44.91242457837373792, 6.706614724335260291, -13.16873016854403744 ) ) ; +#660 = DIRECTION ( 'NONE', ( 0.000000000000000000, 0.000000000000000000, -1.000000000000000000 ) ) ; +#661 = AXIS2_PLACEMENT_3D ( 'NONE', #202, #1518, #405 ) ; +#662 = AXIS2_PLACEMENT_3D ( 'NONE', #1728, #1900, #1511 ) ; +#663 = CARTESIAN_POINT ( 'NONE', ( -30.93292422953481591, 34.15495047542153628, -15.31221607047747568 ) ) ; +#664 = CIRCLE ( 'NONE', #532, 1.000000000000000888 ) ; +#665 = CARTESIAN_POINT ( 'NONE', ( -37.50000000000000000, 0.000000000000000000, -12.50000000000000000 ) ) ; +#666 = CARTESIAN_POINT ( 'NONE', ( -32.00804062969424280, 35.49900831481810570, -13.60042106215898627 ) ) ; +#667 = CARTESIAN_POINT ( 'NONE', ( 44.27828862574268243, 8.548464662501828570, 15.37648355136304801 ) ) ; +#668 = ORIENTED_EDGE ( 'NONE', *, *, #1482, .T. ) ; +#669 = CARTESIAN_POINT ( 'NONE', ( -38.49829738906406362, 25.33646801997567977, -6.984734518072002629 ) ) ; +#670 = CARTESIAN_POINT ( 'NONE', ( -43.64736563080817433, 10.38098255457813046, 11.49219709530480849 ) ) ; +#671 = ADVANCED_FACE ( 'NONE', ( #2194 ), #1756, .F. ) ; +#672 = EDGE_LOOP ( 'NONE', ( #169, #1160, #2383, #805 ) ) ; +#673 = CARTESIAN_POINT ( 'NONE', ( 43.08855886698517423, 12.00403861870570665, 11.60551830606362600 ) ) ; +#674 = CIRCLE ( 'NONE', #406, 5.499999999999994671 ) ; +#675 = CARTESIAN_POINT ( 'NONE', ( -43.00000000000000000, 6.284924945759544634, 12.50000000000000000 ) ) ; +#676 = LINE ( 'NONE', #2624, #53 ) ; +#677 = DIRECTION ( 'NONE', ( 0.9422632794457278527, -0.3348729792147797646, 0.000000000000000000 ) ) ; +#678 = AXIS2_PLACEMENT_3D ( 'NONE', #821, #789, #2498 ) ; +#679 = ORIENTED_EDGE ( 'NONE', *, *, #1889, .T. ) ; +#680 = CARTESIAN_POINT ( 'NONE', ( -30.33456232408972042, 33.33254759904097142, -14.24943462682488615 ) ) ; +#681 = CARTESIAN_POINT ( 'NONE', ( -32.00000000000000000, 44.21079393477482000, 12.49999999999999822 ) ) ; +#682 = CARTESIAN_POINT ( 'NONE', ( -31.62984376346780735, 36.62285101022552425, -11.55718020732114226 ) ) ; +#683 = CARTESIAN_POINT ( 'NONE', ( 43.08988301295705980, 12.00019263241546774, 14.48836083988715195 ) ) ; +#684 = CARTESIAN_POINT ( 'NONE', ( -33.72389765545759133, 34.00869459316927390, -16.50659491195139950 ) ) ; +#685 = CARTESIAN_POINT ( 'NONE', ( -37.59468065372130496, 27.96102576855722432, 19.00000000000000000 ) ) ; +#686 = EDGE_CURVE ( 'NONE', #1264, #387, #2762, .T. ) ; +#687 = CARTESIAN_POINT ( 'NONE', ( -30.69783405021556177, 33.88365275426978940, -10.05477273901099089 ) ) ; +#688 = LINE ( 'NONE', #1289, #619 ) ; +#689 = DIRECTION ( 'NONE', ( -0.000000000000000000, 1.000000000000000000, -0.000000000000000000 ) ) ; +#690 = CARTESIAN_POINT ( 'NONE', ( -43.08759061399217671, 12.00685091267252069, -11.59765743339665711 ) ) ; +#691 = EDGE_CURVE ( 'NONE', #1281, #1380, #2274, .T. ) ; +#692 = ORIENTED_EDGE ( 'NONE', *, *, #2043, .F. ) ; +#693 = CARTESIAN_POINT ( 'NONE', ( 0.000000000000000000, 24.99999999999999645, 20.50000000000000000 ) ) ; +#694 = CARTESIAN_POINT ( 'NONE', ( -36.74416741499855021, 30.43134423836137259, 6.169177601812672940 ) ) ; +#695 = CARTESIAN_POINT ( 'NONE', ( -40.62089237294635069, 19.17138398148065903, -4.480948801707161699 ) ) ; +#696 = CARTESIAN_POINT ( 'NONE', ( 33.35637253533320745, 39.38759000239073060, 16.13454712838523264 ) ) ; +#697 = CARTESIAN_POINT ( 'NONE', ( -33.54139374628734060, 33.99473049945354575, -16.32622377373466449 ) ) ; +#698 = CARTESIAN_POINT ( 'NONE', ( -33.59905643722286328, 39.56632930884550348, 16.41383903443793457 ) ) ; +#699 = VERTEX_POINT ( 'NONE', #78 ) ; +#700 = CARTESIAN_POINT ( 'NONE', ( -30.07465626233681633, 32.68070413098902094, -12.63213340734007595 ) ) ; +#701 = CARTESIAN_POINT ( 'NONE', ( -32.11434084504631414, 34.86669446324285104, -8.434407110591786605 ) ) ; +#702 = CARTESIAN_POINT ( 'NONE', ( -35.31999555688396697, 32.64726791736432432, -7.450487090025976755 ) ) ; +#703 = DIRECTION ( 'NONE', ( -1.000000000000000000, 0.000000000000000000, 0.000000000000000000 ) ) ; +#704 = CARTESIAN_POINT ( 'NONE', ( 32.17590843201791984, 43.43964489217512437, 13.92605412574600798 ) ) ; +#705 = DIRECTION ( 'NONE', ( 0.000000000000000000, -0.000000000000000000, -1.000000000000000000 ) ) ; +#706 =( BOUNDED_CURVE ( ) B_SPLINE_CURVE ( 3, ( #1552, #695, #488, #2407 ), + .UNSPECIFIED., .F., .T. ) + B_SPLINE_CURVE_WITH_KNOTS ( ( 4, 4 ), + ( 4.304835433566713832, 6.283185307179586232 ), + .UNSPECIFIED. ) + CURVE ( ) GEOMETRIC_REPRESENTATION_ITEM ( ) RATIONAL_B_SPLINE_CURVE ( ( 1.000000000000000000, 0.6995862986750142065, 0.6995862986750142065, 1.000000000000000000 ) ) + REPRESENTATION_ITEM ( '' ) ); +#707 = CARTESIAN_POINT ( 'NONE', ( -32.80647276483281871, 34.99140825999616311, -17.07639056697697555 ) ) ; +#708 = CARTESIAN_POINT ( 'NONE', ( -35.24008933272887134, 34.79994392319321861, 7.395706311578155834 ) ) ; +#709 = LINE ( 'NONE', #1344, #1918 ) ; +#710 = AXIS2_PLACEMENT_3D ( 'NONE', #334, #542, #1193 ) ; +#711 = CARTESIAN_POINT ( 'NONE', ( 44.36934426592475234, 8.283993259259004205, 15.18396257553581563 ) ) ; +#712 = AXIS2_PLACEMENT_3D ( 'NONE', #1069, #654, #2146 ) ; +#713 = DIRECTION ( 'NONE', ( 0.1974601447941596311, -0.5015927567843166957, 0.8422672957911752079 ) ) ; +#714 = CARTESIAN_POINT ( 'NONE', ( -42.74090254271485634, 13.01380754396807227, 17.39701427642247822 ) ) ; +#715 = CARTESIAN_POINT ( 'NONE', ( -31.99991003093284192, 37.38075727824945460, -12.35973869815139103 ) ) ; +#716 = CARTESIAN_POINT ( 'NONE', ( -34.46299344196333436, 34.63959879037075495, -7.029990670834037836 ) ) ; +#717 = DIRECTION ( 'NONE', ( 0.000000000000000000, 0.000000000000000000, -1.000000000000000000 ) ) ; +#718 = CARTESIAN_POINT ( 'NONE', ( -45.50000000000000000, 5.000000000000000000, -20.50000000000000355 ) ) ; +#719 = CARTESIAN_POINT ( 'NONE', ( 37.50000000000000000, 5.000000000000004441, 12.50000000000000000 ) ) ; +#720 = ORIENTED_EDGE ( 'NONE', *, *, #1663, .T. ) ; +#721 = EDGE_CURVE ( 'NONE', #1520, #2102, #220, .T. ) ; +#722 = CARTESIAN_POINT ( 'NONE', ( -33.32773819346601130, 40.35437403084119268, 8.879475727009140229 ) ) ; +#723 = CARTESIAN_POINT ( 'NONE', ( -33.70831313507061822, 39.24899287438046969, 4.460636945253258823 ) ) ; +#724 = ADVANCED_FACE ( 'NONE', ( #2640 ), #1337, .F. ) ; +#725 = CARTESIAN_POINT ( 'NONE', ( -44.77913493337637618, 7.093754932011590242, 13.97671189358419142 ) ) ; +#726 = CARTESIAN_POINT ( 'NONE', ( -31.79596971711020004, 36.95827019245823664, -13.36200435939616504 ) ) ; +#727 = CARTESIAN_POINT ( 'NONE', ( -30.43859957767574187, 33.50756392938859562, -10.53374068455000589 ) ) ; +#728 = FACE_OUTER_BOUND ( 'NONE', #1106, .T. ) ; +#729 = DIRECTION ( 'NONE', ( -1.000000000000000000, -0.000000000000000000, -0.000000000000000000 ) ) ; +#730 = ORIENTED_EDGE ( 'NONE', *, *, #80, .T. ) ; +#731 = DIRECTION ( 'NONE', ( 1.000000000000000000, 0.000000000000000000, 0.000000000000000000 ) ) ; +#732 = CARTESIAN_POINT ( 'NONE', ( -32.04197879035449859, 44.08886640157222558, 11.71524737660623927 ) ) ; +#733 = DIRECTION ( 'NONE', ( -0.000000000000000000, -1.000000000000000000, -0.000000000000000000 ) ) ; +#734 = AXIS2_PLACEMENT_3D ( 'NONE', #1123, #96, #2223 ) ; +#735 = CARTESIAN_POINT ( 'NONE', ( 1.750000000000000888, 24.99999999999999645, 4.500000000000000888 ) ) ; +#736 = EDGE_CURVE ( 'NONE', #603, #1459, #2233, .T. ) ; +#737 = CARTESIAN_POINT ( 'NONE', ( -32.00335348115621770, 32.31123735782023942, -12.27853751794684634 ) ) ; +#738 = CARTESIAN_POINT ( 'NONE', ( -33.44831640414376039, 35.07421879785913177, -8.767637688663361573 ) ) ; +#739 = CARTESIAN_POINT ( 'NONE', ( -37.50000000000000000, 0.000000000000000000, -9.749999999999998224 ) ) ; +#740 = CARTESIAN_POINT ( 'NONE', ( -35.10832082258161080, 33.14804689480647681, -17.45321775919601848 ) ) ; +#741 = CARTESIAN_POINT ( 'NONE', ( 32.00000000000000000, 44.04346725332046475, 12.50000000000000000 ) ) ; +#742 = ORIENTED_EDGE ( 'NONE', *, *, #279, .F. ) ; +#743 = PRODUCT_DEFINITION_CONTEXT ( 'detailed design', #1056, 'design' ) ; +#744 = CARTESIAN_POINT ( 'NONE', ( -42.98233690606030422, 6.345555189378163874, 12.05046592392595528 ) ) ; +#745 = DIRECTION ( 'NONE', ( -1.000000000000000000, 0.000000000000000000, 0.000000000000000000 ) ) ; +#746 = CARTESIAN_POINT ( 'NONE', ( 0.000000000000000000, 45.00000000000000000, 4.500000000000000888 ) ) ; +#747 = AXIS2_PLACEMENT_3D ( 'NONE', #1666, #1260, #1919 ) ; +#748 = AXIS2_PLACEMENT_3D ( 'NONE', #384, #1227, #2098 ) ; +#749 = ADVANCED_FACE ( 'NONE', ( #1985, #1509, #437 ), #1291, .T. ) ; +#750 = CARTESIAN_POINT ( 'NONE', ( 37.50000000000000000, 5.000000000000000000, -0.5000000000000004441 ) ) ; +#751 = FILL_AREA_STYLE ('',( #778 ) ) ; +#752 = VECTOR ( 'NONE', #2661, 1000.000000000000114 ) ; +#753 = CARTESIAN_POINT ( 'NONE', ( -37.50000000000000000, 75.00000000000001421, -15.25000000000000355 ) ) ; +#754 = CARTESIAN_POINT ( 'NONE', ( 40.14688991242804406, 20.54812567066288764, 18.83082239818627812 ) ) ; +#755 = ORIENTED_EDGE ( 'NONE', *, *, #1267, .F. ) ; +#756 = CARTESIAN_POINT ( 'NONE', ( -38.21994831614073718, 22.69290528549491270, 7.000000000000003553 ) ) ; +#757 = VECTOR ( 'NONE', #1894, 1000.000000000000000 ) ; +#758 = VERTEX_POINT ( 'NONE', #454 ) ; +#759 = CYLINDRICAL_SURFACE ( 'NONE', #377, 2.750000000000002665 ) ; +#760 = CARTESIAN_POINT ( 'NONE', ( -32.33154110754893651, 43.24783170891804929, 14.42725225151876955 ) ) ; +#761 = CARTESIAN_POINT ( 'NONE', ( -44.91242457837384450, 6.706614724334936106, -11.83126983145600342 ) ) ; +#762 = CARTESIAN_POINT ( 'NONE', ( -35.22949827446942805, 32.91062772082233323, -7.490079767141366140 ) ) ; +#763 = CARTESIAN_POINT ( 'NONE', ( -35.86915977639386455, 32.97280677233783308, -18.46760616633292429 ) ) ; +#764 = CARTESIAN_POINT ( 'NONE', ( 42.85920530509989845, 6.768216077038142764, 11.25047455158256859 ) ) ; +#765 = CARTESIAN_POINT ( 'NONE', ( 15.54977303496059449, 10.28868360277136063, 4.500000000000000888 ) ) ; +#766 = EDGE_CURVE ( 'NONE', #1947, #30, #86, .T. ) ; +#767 = CARTESIAN_POINT ( 'NONE', ( -42.70483288625755591, 7.298114032308856913, -14.28116850774944702 ) ) ; +#768 =( BOUNDED_SURFACE ( ) B_SPLINE_SURFACE ( 3, 2, ( + ( #1029, #2106, #2687 ), + ( #600, #815, #2489 ), + ( #1463, #2465, #1848 ), + ( #1433, #143, #2048 ), + ( #2076, #585, #1247 ), + ( #172, #799, #997 ), + ( #378, #2673, #126 ), + ( #1622, #543, #158 ), + ( #2300, #1667, #188 ), + ( #1011, #982, #764 ), + ( #1044, #2713, #2519 ), + ( #1447, #2700, #2477 ), + ( #363, #780, #2315 ), + ( #2090, #2256, #335 ), + ( #1863, #556, #1415 ), + ( #1234, #2270, #1653 ), + ( #349, #571, #2285 ), + ( #2507, #215, #2520 ), + ( #1045, #2534, #2316 ), + ( #2077, #1909, #1897 ), + ( #2343, #1248, #1464 ), + ( #1682, #1434, #586 ), + ( #860, #391, #2107 ), + ( #421, #1222, #1276 ), + ( #2134, #844, #1924 ), + ( #1448, #1072, #2549 ), + ( #816, #5, #2286 ), + ( #1696, #2490, #1262 ), + ( #2714, #2731, #2301 ), + ( #408, #2122, #2757 ), + ( #204, #1058, #572 ), + ( #2744, #364, #159 ), + ( #1478, #379, #613 ), + ( #628, #1493, #831 ), + ( #1013, #1864, #1654 ), + ( #800, #2508, #1668 ), + ( #1235, #189, #1881 ), + ( #2330, #2092, #173 ) ), + .UNSPECIFIED., .F., .F., .F. ) + B_SPLINE_SURFACE_WITH_KNOTS ( ( 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4 ), + ( 3, 3 ), + ( -0.000000000000000000, 0.04908738521234051744, 0.09817477042468103487, 0.1472621556370215523, 0.1963495408493620697, 0.2945243112740431046, 0.3926990816987241395, 0.4908738521234051744, 0.5890486225480862092, 0.7853981633974482790, 0.9817477042468103487, 1.178097245096172418, 1.570796326794896558, 1.963495408493620697, 2.356194490192344837, 2.552544031041707129, 2.748893571891068976, 2.945243112740430824, 3.141592653589793116 ), + ( 0.000000000000000000, 1.000000000000000000 ), + .UNSPECIFIED. ) + GEOMETRIC_REPRESENTATION_ITEM ( ) RATIONAL_B_SPLINE_SURFACE ( ( + ( 1.000000000000000000, 0.1650323245415012685, 1.000000000000000000), + ( 1.000000000000000000, 0.1650312009201844454, 1.000000000000000000), + ( 1.000000000000000000, 0.1656105720154912864, 1.000000000000000000), + ( 1.000000000000000000, 0.1678868551765326789, 1.000000000000000000), + ( 1.000000000000000000, 0.1695842193436412626, 1.000000000000000000), + ( 1.000000000000000000, 0.1739978385179177800, 1.000000000000000000), + ( 1.000000000000000000, 0.1767131491670237697, 1.000000000000000000), + ( 1.000000000000000000, 0.1830235777788156992, 1.000000000000000000), + ( 1.000000000000000000, 0.1866179000439102120, 1.000000000000000000), + ( 1.000000000000000000, 0.1984960600878372672, 1.000000000000000000), + ( 1.000000000000000000, 0.2078644858773363580, 1.000000000000000000), + ( 1.000000000000000000, 0.2284507283937017852, 1.000000000000000000), + ( 1.000000000000000000, 0.2396680134330792800, 1.000000000000000000), + ( 1.000000000000000000, 0.2632145179655434597, 1.000000000000000000), + ( 1.000000000000000000, 0.2755469356012947846, 1.000000000000000000), + ( 1.000000000000000000, 0.3008525186329124579, 1.000000000000000000), + ( 1.000000000000000000, 0.3138283910420504030, 1.000000000000000000), + ( 1.000000000000000000, 0.3532598395141761660, 1.000000000000000000), + ( 1.000000000000000000, 0.3801944580803622298, 1.000000000000000000), + ( 1.000000000000000000, 0.4339434541708537818, 1.000000000000000000), + ( 1.000000000000000000, 0.4607773684084630617, 1.000000000000000000), + ( 1.000000000000000000, 0.5135864445221429708, 1.000000000000000000), + ( 1.000000000000000000, 0.5395685366562826824, 1.000000000000000000), + ( 1.000000000000000000, 0.6154803776386914560, 1.000000000000000000), + ( 1.000000000000000000, 0.6633476856979385605, 1.000000000000000000), + ( 1.000000000000000000, 0.7508658766751572511, 1.000000000000000000), + ( 1.000000000000000000, 0.7905347754414473460, 1.000000000000000000), + ( 1.000000000000000000, 0.8598216432931320430, 1.000000000000000000), + ( 1.000000000000000000, 0.8894434017616511534, 1.000000000000000000), + ( 1.000000000000000000, 0.9253744439781100839, 1.000000000000000000), + ( 1.000000000000000000, 0.9359386994017486749, 1.000000000000000000), + ( 1.000000000000000000, 0.9541292101921221569, 1.000000000000000000), + ( 1.000000000000000000, 0.9617554693256525900, 1.000000000000000000), + ( 1.000000000000000000, 0.9739896480940225532, 1.000000000000000000), + ( 1.000000000000000000, 0.9785975666657328320, 1.000000000000000000), + ( 1.000000000000000000, 0.9847468226704357841, 1.000000000000000000), + ( 1.000000000000000000, 0.9862886620238880964, 1.000000000000000000), + ( 1.000000000000000000, 0.9862881586313551052, 1.000000000000000000) ) ) + REPRESENTATION_ITEM ( '' ) SURFACE ( ) ); +#769 = ORIENTED_EDGE ( 'NONE', *, *, #2202, .T. ) ; +#770 = CARTESIAN_POINT ( 'NONE', ( -41.87309194091710651, 10.15314363899526739, 9.145056144941985821 ) ) ; +#771 = ORIENTED_EDGE ( 'NONE', *, *, #1445, .T. ) ; +#772 = ORIENTED_EDGE ( 'NONE', *, *, #1753, .F. ) ; +#773 = CARTESIAN_POINT ( 'NONE', ( -33.95521765768089750, 38.53185788492605468, 4.303130558510118497 ) ) ; +#774 = CARTESIAN_POINT ( 'NONE', ( 44.00000000000000000, 6.284924945759610360, 12.50000000000000000 ) ) ; +#775 = AXIS2_PLACEMENT_3D ( 'NONE', #1483, #234, #1912 ) ; +#776 = VERTEX_POINT ( 'NONE', #1970 ) ; +#777 = FACE_OUTER_BOUND ( 'NONE', #2497, .T. ) ; +#778 = FILL_AREA_STYLE_COLOUR ( '', #1828 ) ; +#779 = CARTESIAN_POINT ( 'NONE', ( -32.85141556144905195, 35.18208530508464094, -15.47331317117085625 ) ) ; +#780 = CARTESIAN_POINT ( 'NONE', ( 43.67474508509557296, 10.30145884050165250, 13.29169076162657248 ) ) ; +#781 = ADVANCED_BREP_SHAPE_REPRESENTATION ( 'jsk_fetch_l515headmount', ( #1362, #442 ), #2540 ) ; +#782 = CARTESIAN_POINT ( 'NONE', ( -31.33893166490059912, 34.47609613105670689, -9.190905035202046491 ) ) ; +#783 = CARTESIAN_POINT ( 'NONE', ( -43.66728881046966393, 10.32311561441583336, -12.40537740076413442 ) ) ; +#784 = EDGE_LOOP ( 'NONE', ( #446, #1217, #1690, #1049 ) ) ; +#785 = EDGE_CURVE ( 'NONE', #1271, #219, #676, .T. ) ; +#786 = CARTESIAN_POINT ( 'NONE', ( -40.17685806913497970, 20.46108306200392590, 7.477634347489793498 ) ) ; +#787 = ORIENTED_EDGE ( 'NONE', *, *, #2553, .T. ) ; +#788 = ORIENTED_EDGE ( 'NONE', *, *, #106, .T. ) ; +#789 = DIRECTION ( 'NONE', ( 0.000000000000000000, 1.000000000000000000, -0.000000000000000000 ) ) ; +#790 = CARTESIAN_POINT ( 'NONE', ( -32.00000000000000000, 44.04346725332046475, 12.50000000000000000 ) ) ; +#791 = DIRECTION ( 'NONE', ( -0.000000000000000000, -0.000000000000000000, 1.000000000000000000 ) ) ; +#792 = EDGE_LOOP ( 'NONE', ( #2094, #937, #2249, #2160, #1258 ) ) ; +#793 =( BOUNDED_SURFACE ( ) B_SPLINE_SURFACE ( 3, 2, ( + ( #872, #1116, #1376 ), + ( #495, #1335, #1585 ), + ( #2399, #1167, #63 ), + ( #2431, #47, #727 ), + ( #2452, #1574, #1364 ), + ( #2192, #530, #1596 ), + ( #2023, #2638, #687 ), + ( #2207, #1129, #1388 ), + ( #479, #956, #271 ), + ( #2244, #919, #1983 ), + ( #1967, #1769, #2610 ), + ( #2218, #1807, #2622 ), + ( #1557, #297, #701 ), + ( #520, #738, #1546 ), + ( #2414, #101, #1349 ), + ( #286, #932, #2660 ), + ( #1143, #2228, #1997 ), + ( #903, #1156, #76 ), + ( #2007, #1782, #2648 ), + ( #89, #1754, #716 ), + ( #508, #945, #1796 ), + ( #2442, #310, #2683 ), + ( #333, #1205, #2046 ), + ( #2474, #1608, #1401 ), + ( #2697, #2463, #994 ), + ( #762, #1413, #968 ), + ( #140, #2060, #1180 ), + ( #123, #980, #2254 ) ), + .UNSPECIFIED., .F., .F., .T. ) + B_SPLINE_SURFACE_WITH_KNOTS ( ( 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4 ), + ( 3, 3 ), + ( 0.009244993961633881860, 0.009677031696171775610, 0.01010906943070966763, 0.01054110716524755964, 0.01097314489978545166, 0.01183722036886123569, 0.01270129583793701972, 0.01356537130701280375, 0.01399740904155069576, 0.01442944677608858778, 0.01486148451062647979, 0.01529352224516437181, 0.01572555997970226382, 0.01615759771424015584 ), + ( 0.000000000000000000, 1.000000000000000000 ), + .UNSPECIFIED. ) + GEOMETRIC_REPRESENTATION_ITEM ( ) RATIONAL_B_SPLINE_SURFACE ( ( + ( 1.000000000000000000, 0.2168728904164866356, 1.000000000000000000), + ( 1.000000000000000000, 0.2374361215246205692, 1.000000000000000000), + ( 1.000000000000000000, 0.2575450339862633276, 1.000000000000000000), + ( 1.000000000000000000, 0.2971226315443064592, 1.000000000000000000), + ( 1.000000000000000000, 0.3165897502856311330, 1.000000000000000000), + ( 1.000000000000000000, 0.3549966455741205285, 1.000000000000000000), + ( 1.000000000000000000, 0.3739345513055724046, 1.000000000000000000), + ( 1.000000000000000000, 0.4113252261681221711, 1.000000000000000000), + ( 1.000000000000000000, 0.4297773352029153338, 1.000000000000000000), + ( 1.000000000000000000, 0.4844208125641403795, 1.000000000000000000), + ( 1.000000000000000000, 0.5199734647860911885, 1.000000000000000000), + ( 1.000000000000000000, 0.5869155412020345963, 1.000000000000000000), + ( 1.000000000000000000, 0.6185741957824533177, 1.000000000000000000), + ( 1.000000000000000000, 0.6777655986561057500, 1.000000000000000000), + ( 1.000000000000000000, 0.7044060086928554121, 1.000000000000000000), + ( 1.000000000000000000, 0.7393498023838022126, 1.000000000000000000), + ( 1.000000000000000000, 0.7502271050966030641, 1.000000000000000000), + ( 1.000000000000000000, 0.7696309372632342827, 1.000000000000000000), + ( 1.000000000000000000, 0.7782359754378944672, 1.000000000000000000), + ( 1.000000000000000000, 0.7933528242876843883, 1.000000000000000000), + ( 1.000000000000000000, 0.7998620367471896975, 1.000000000000000000), + ( 1.000000000000000000, 0.8104716960234968903, 1.000000000000000000), + ( 1.000000000000000000, 0.8146694414438047094, 1.000000000000000000), + ( 1.000000000000000000, 0.8213301770714689365, 1.000000000000000000), + ( 1.000000000000000000, 0.8237619531728652689, 1.000000000000000000), + ( 1.000000000000000000, 0.8272414356351114328, 1.000000000000000000), + ( 1.000000000000000000, 0.8283393696832602737, 1.000000000000000000), + ( 1.000000000000000000, 0.8290880361187438208, 1.000000000000000000) ) ) + REPRESENTATION_ITEM ( '' ) SURFACE ( ) ); +#794 = CARTESIAN_POINT ( 'NONE', ( -32.00000000000000000, 44.04346725332046475, 9.278174593052025187 ) ) ; +#795 = CARTESIAN_POINT ( 'NONE', ( -31.95476396459450186, 35.56406957751627118, -13.40589334827961743 ) ) ; +#796 = CIRCLE ( 'NONE', #1383, 10.00000000000000000 ) ; +#797 = CIRCLE ( 'NONE', #1872, 1.750000000000000888 ) ; +#798 = VECTOR ( 'NONE', #1100, 1000.000000000000000 ) ; +#799 = CARTESIAN_POINT ( 'NONE', ( 43.16529390050403237, 11.78116146411267273, 13.64926868013135675 ) ) ; +#800 = CARTESIAN_POINT ( 'NONE', ( 31.98742823517670431, 44.24730866661797535, 11.64916250785372398 ) ) ; +#801 = CARTESIAN_POINT ( 'NONE', ( -42.23330461419605797, 8.916679505932222582, -15.31019820240221385 ) ) ; +#802 = EDGE_LOOP ( 'NONE', ( #772, #1629, #2097, #1649 ) ) ; +#803 = CARTESIAN_POINT ( 'NONE', ( -42.57530924775475967, 13.49477380810001215, 9.621967686061859482 ) ) ; +#804 = EDGE_LOOP ( 'NONE', ( #1840, #639, #1278, #908, #1707 ) ) ; +#805 = ORIENTED_EDGE ( 'NONE', *, *, #1735, .F. ) ; +#806 = CARTESIAN_POINT ( 'NONE', ( -37.50000000000000000, 5.000000000000000000, 12.50000000000000000 ) ) ; +#807 = ADVANCED_FACE ( 'NONE', ( #1145 ), #857, .F. ) ; +#808 = CARTESIAN_POINT ( 'NONE', ( 31.94552866371286370, 44.36900610829383140, 12.50000000000000000 ) ) ; +#809 = AXIS2_PLACEMENT_3D ( 'NONE', #2434, #2651, #922 ) ; +#810 = CARTESIAN_POINT ( 'NONE', ( 43.00000000000000000, 6.284924945759599701, 12.50000000000000000 ) ) ; +#811 = VECTOR ( 'NONE', #591, 1000.000000000000000 ) ; +#812 = EDGE_LOOP ( 'NONE', ( #153, #788, #1034, #200 ) ) ; +#813 = CARTESIAN_POINT ( 'NONE', ( -44.94552866371285660, 6.610463800732930828, -12.50000000000000000 ) ) ; +#814 = CARTESIAN_POINT ( 'NONE', ( -32.25687261167739450, 33.00434678836186464, -14.16464040109613975 ) ) ; +#815 = CARTESIAN_POINT ( 'NONE', ( 43.00000000005574918, 12.26125813590289404, 12.69414988364373009 ) ) ; +#816 = CARTESIAN_POINT ( 'NONE', ( 36.74416741499790362, 30.43134423836325553, 6.169177601812959821 ) ) ; +#817 = CARTESIAN_POINT ( 'NONE', ( -44.29376301731546306, 8.503519241818372265, -15.34954841740972142 ) ) ; +#818 = ORIENTED_EDGE ( 'NONE', *, *, #233, .F. ) ; +#819 = CARTESIAN_POINT ( 'NONE', ( -43.00000000000000000, 12.26125813606935644, 12.49999999999998046 ) ) ; +#820 = ORIENTED_EDGE ( 'NONE', *, *, #595, .T. ) ; +#821 = CARTESIAN_POINT ( 'NONE', ( 0.000000000000000000, 0.000000000000000000, 0.000000000000000000 ) ) ; +#822 = PLANE ( 'NONE', #1475 ) ; +#823 = EDGE_CURVE ( 'NONE', #2551, #219, #626, .T. ) ; +#824 = CARTESIAN_POINT ( 'NONE', ( -37.50000000000000000, 25.16419609954000691, 7.000000000000004441 ) ) ; +#825 = ORIENTED_EDGE ( 'NONE', *, *, #1801, .T. ) ; +#826 = LINE ( 'NONE', #1042, #1170 ) ; +#827 = CARTESIAN_POINT ( 'NONE', ( -43.16529390050403237, 11.78116146411261767, 11.35073131986864325 ) ) ; +#828 = EDGE_CURVE ( 'NONE', #2749, #776, #2062, .T. ) ; +#829 = CIRCLE ( 'NONE', #2658, 1.750000000000000888 ) ; +#830 = DIRECTION ( 'NONE', ( 0.000000000000000000, 1.000000000000000000, 0.000000000000000000 ) ) ; +#831 = CARTESIAN_POINT ( 'NONE', ( 32.28090642499900298, 43.07922933215748884, 10.72781387842155354 ) ) ; +#832 = CARTESIAN_POINT ( 'NONE', ( -43.58712382716773703, 10.55595506930863969, -16.48569572509164161 ) ) ; +#833 = ORIENTED_EDGE ( 'NONE', *, *, #358, .T. ) ; +#834 = CARTESIAN_POINT ( 'NONE', ( 32.00000000000000000, 44.04346725332046475, 15.72182540694797659 ) ) ; +#835 = ORIENTED_EDGE ( 'NONE', *, *, #284, .F. ) ; +#836 = CARTESIAN_POINT ( 'NONE', ( -32.00000000000000000, 44.04346725332046475, 12.50000000000000000 ) ) ; +#837 = CARTESIAN_POINT ( 'NONE', ( -37.50000000000000000, 5.000000000000004441, 12.50000000000000000 ) ) ; +#838 = DIRECTION ( 'NONE', ( -0.1974601447941585486, 0.5015927567843139201, 0.8422672957911769842 ) ) ; +#839 = VERTEX_POINT ( 'NONE', #1322 ) ; +#840 = CARTESIAN_POINT ( 'NONE', ( -39.54431025431560442, 22.29832024870238527, -6.071177093122991586 ) ) ; +#841 = DIRECTION ( 'NONE', ( -0.9422632794457279637, 0.3348729792147796536, 1.161824037028343345E-16 ) ) ; +#842 = EDGE_CURVE ( 'NONE', #1516, #1956, #1572, .T. ) ; +#843 = CARTESIAN_POINT ( 'NONE', ( 43.05645483273530516, 12.09728489066297463, 11.76217390973267563 ) ) ; +#844 = CARTESIAN_POINT ( 'NONE', ( 39.33771734144060161, 22.89837003650888292, 7.131934116793090972 ) ) ; +#845 = AXIS2_PLACEMENT_3D ( 'NONE', #265, #1990, #927 ) ; +#846 = CARTESIAN_POINT ( 'NONE', ( -44.94552866371285660, 6.610463800732931716, 12.50000000000000000 ) ) ; +#847 = ORIENTED_EDGE ( 'NONE', *, *, #243, .T. ) ; +#848 = AXIS2_PLACEMENT_3D ( 'NONE', #2694, #1178, #966 ) ; +#849 = CARTESIAN_POINT ( 'NONE', ( -43.01186382226980953, 12.22679962567521983, 12.88659521194966473 ) ) ; +#850 = VECTOR ( 'NONE', #1984, 1000.000000000000000 ) ; +#851 = VERTEX_POINT ( 'NONE', #1009 ) ; +#852 = DIRECTION ( 'NONE', ( 0.000000000000000000, 0.000000000000000000, -1.000000000000000000 ) ) ; +#853 = CARTESIAN_POINT ( 'NONE', ( -33.21412629083663859, 33.91520775805124543, -9.044031610458405979 ) ) ; +#854 = ORIENTED_EDGE ( 'NONE', *, *, #1141, .T. ) ; +#855 = CARTESIAN_POINT ( 'NONE', ( -40.14276169517789583, 16.09266616533440342, -7.655275379028670280 ) ) ; +#856 = CARTESIAN_POINT ( 'NONE', ( -44.84138201281258063, 6.912958087210509639, 13.66377469286515556 ) ) ; +#857 = TOROIDAL_SURFACE ( 'NONE', #1657, 8.000000000000000000, 5.000000000000000000 ) ; +#858 = CARTESIAN_POINT ( 'NONE', ( 0.000000000000000000, 65.00000000000000000, 4.500000000000000888 ) ) ; +#859 = ADVANCED_FACE ( 'NONE', ( #1634 ), #1412, .F. ) ; +#860 = CARTESIAN_POINT ( 'NONE', ( 41.32601150491565534, 17.12336316791656543, 6.657585757108477331 ) ) ; +#861 = CARTESIAN_POINT ( 'NONE', ( -32.00000000000000000, 44.04346725332046475, 12.50000000000000000 ) ) ; +#862 = EDGE_CURVE ( 'NONE', #2543, #2197, #826, .T. ) ; +#863 = DIRECTION ( 'NONE', ( 0.3223706153912043182, 0.9363265015356214693, -0.1391756762310144557 ) ) ; +#864 = ORIENTED_EDGE ( 'NONE', *, *, #74, .F. ) ; +#865 = B_SPLINE_CURVE_WITH_KNOTS ( 'NONE', 3, + ( #1836, #1208, #2248, #2688, #2271, #1821, #782, #127, #2064, #545, #104, #2674, #1612, #2457, #998, #1624, #1403, #557, #2257, #1637, #144, #1599 ), + .UNSPECIFIED., .F., .F., + ( 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4 ), + ( 0.000000000000000000, 0.001108078520948957554, 0.002216157041897915108, 0.002770196302372403968, 0.003324235562846892394, 0.003878274823321381255, 0.004432314083795870115, 0.005540392604744849570, 0.006648471125693828157, 0.007756549646642807612, 0.008864628167591787067 ), + .UNSPECIFIED. ) ; +#866 = CARTESIAN_POINT ( 'NONE', ( -30.19021555168547977, 32.96587464041111559, -13.75994990573270904 ) ) ; +#867 = CARTESIAN_POINT ( 'NONE', ( -32.25228189023766845, 33.00361171489560519, -10.83935851711716225 ) ) ; +#868 = CARTESIAN_POINT ( 'NONE', ( -31.40252164865539442, 34.52806025565234904, -15.88782948103038173 ) ) ; +#869 = EDGE_LOOP ( 'NONE', ( #1198, #2536, #825, #450, #2001, #1115, #1541, #574 ) ) ; +#870 = CARTESIAN_POINT ( 'NONE', ( -36.87935591080537989, 30.03868881232924437, -6.168792543291592878 ) ) ; +#871 = CARTESIAN_POINT ( 'NONE', ( -44.94552866371264344, 6.610463800733539230, 12.60635600570750370 ) ) ; +#872 = CARTESIAN_POINT ( 'NONE', ( -32.14518621856249325, 32.72879920981658586, -11.24462381489573914 ) ) ; +#873 = CYLINDRICAL_SURFACE ( 'NONE', #1342, 1.750000000000000888 ) ; +#874 = DIRECTION ( 'NONE', ( -0.000000000000000000, -0.000000000000000000, -1.000000000000000000 ) ) ; +#875 = AXIS2_PLACEMENT_3D ( 'NONE', #2380, #1513, #1312 ) ; +#876 = CARTESIAN_POINT ( 'NONE', ( 45.50000000000002132, 5.000000000000000000, 0.000000000000000000 ) ) ; +#877 = FACE_OUTER_BOUND ( 'NONE', #2628, .T. ) ; +#878 = ORIENTED_EDGE ( 'NONE', *, *, #2226, .F. ) ; +#879 = ADVANCED_FACE ( 'NONE', ( #777 ), #2681, .F. ) ; +#880 = FILL_AREA_STYLE_COLOUR ( '', #1428 ) ; +#881 = CARTESIAN_POINT ( 'NONE', ( 0.000000000000000000, 24.99999999999999645, 4.500000000000000888 ) ) ; +#882 = CARTESIAN_POINT ( 'NONE', ( -33.03631303454734081, 35.15647620981305010, -15.73909685935100988 ) ) ; +#883 = ORIENTED_EDGE ( 'NONE', *, *, #228, .T. ) ; +#884 = CARTESIAN_POINT ( 'NONE', ( -41.70775951432997886, 10.72066285937119190, -8.950894989271690250 ) ) ; +#885 = CARTESIAN_POINT ( 'NONE', ( -36.80118201742375561, 30.26574514008666839, 18.06883033849386067 ) ) ; +#886 =( BOUNDED_CURVE ( ) B_SPLINE_CURVE ( 3, ( #1811, #2466, #2663, #741 ), + .UNSPECIFIED., .F., .T. ) + B_SPLINE_CURVE_WITH_KNOTS ( ( 4, 4 ), + ( 1.570796326794896780, 3.141592653589793116 ), + .UNSPECIFIED. ) + CURVE ( ) GEOMETRIC_REPRESENTATION_ITEM ( ) RATIONAL_B_SPLINE_CURVE ( ( 1.000000000000000000, 0.8047378541243650485, 0.8047378541243650485, 1.000000000000000000 ) ) + REPRESENTATION_ITEM ( '' ) ); +#887 = VERTEX_POINT ( 'NONE', #1831 ) ; +#888 = PLANE ( 'NONE', #2103 ) ; +#889 = CARTESIAN_POINT ( 'NONE', ( -32.00000000000000000, 44.04346725332046475, 12.50000000000000000 ) ) ; +#890 = CARTESIAN_POINT ( 'NONE', ( -37.50000000000000000, 75.00000000000001421, -12.50000000000000000 ) ) ; +#891 = CARTESIAN_POINT ( 'NONE', ( 0.000000000000000000, 24.99999999999999645, 9.500000000000001776 ) ) ; +#892 = ORIENTED_EDGE ( 'NONE', *, *, #785, .F. ) ; +#893 = PRESENTATION_LAYER_ASSIGNMENT ( '', '', ( #221 ) ) ; +#894 = CIRCLE ( 'NONE', #845, 2.750000000000002665 ) ; +#895 = DIRECTION ( 'NONE', ( 0.000000000000000000, 0.000000000000000000, -1.000000000000000000 ) ) ; +#896 = AXIS2_PLACEMENT_3D ( 'NONE', #1875, #2649, #717 ) ; +#897 = CARTESIAN_POINT ( 'NONE', ( -33.35637253533406010, 39.38759000238735553, 8.865452871613927144 ) ) ; +#898 = EDGE_CURVE ( 'NONE', #1729, #2555, #2727, .T. ) ; +#899 = DIRECTION ( 'NONE', ( -1.000000000000000000, 0.000000000000000000, 0.000000000000000000 ) ) ; +#900 = CARTESIAN_POINT ( 'NONE', ( 41.70300804589836474, 16.02837548772427567, 18.14090539351653319 ) ) ; +#901 = CARTESIAN_POINT ( 'NONE', ( -34.92456918379070885, 33.40671433021112335, -17.36041369813036894 ) ) ; +#902 = CARTESIAN_POINT ( 'NONE', ( -44.27828862574277480, 8.548464662501514155, 15.37648355136317413 ) ) ; +#903 = CARTESIAN_POINT ( 'NONE', ( -34.24459611162955497, 33.90109078729228997, -8.065318095925460895 ) ) ; +#904 = VECTOR ( 'NONE', #1275, 1000.000000000000000 ) ; +#905 = DIRECTION ( 'NONE', ( -1.000000000000000000, 0.000000000000000000, 0.000000000000000000 ) ) ; +#906 = DIRECTION ( 'NONE', ( -1.000000000000000000, 0.000000000000000000, 0.000000000000000000 ) ) ; +#907 = DIRECTION ( 'NONE', ( 0.000000000000000000, -1.000000000000000000, 0.000000000000000000 ) ) ; +#908 = ORIENTED_EDGE ( 'NONE', *, *, #434, .T. ) ; +#909 =( BOUNDED_CURVE ( ) B_SPLINE_CURVE ( 3, ( #1679, #1043, #2546, #2368 ), + .UNSPECIFIED., .F., .F. ) + B_SPLINE_CURVE_WITH_KNOTS ( ( 4, 4 ), + ( 0.000000000000000000, 1.570796326794897002 ), + .UNSPECIFIED. ) + CURVE ( ) GEOMETRIC_REPRESENTATION_ITEM ( ) RATIONAL_B_SPLINE_CURVE ( ( 1.000000000000000000, 0.8047378541243649375, 0.8047378541243649375, 1.000000000000000000 ) ) + REPRESENTATION_ITEM ( '' ) ); +#910 = CARTESIAN_POINT ( 'NONE', ( -31.34597063188975596, 34.48088066318003087, -15.81700846586263687 ) ) ; +#911 = CARTESIAN_POINT ( 'NONE', ( -34.50846982257024109, 36.92493517149638649, 7.789529316019790706 ) ) ; +#912 = LINE ( 'NONE', #2186, #1122 ) ; +#913 = CARTESIAN_POINT ( 'NONE', ( 43.64736563081370235, 10.38098255457012797, 11.49219709529766931 ) ) ; +#914 = PRODUCT_RELATED_PRODUCT_CATEGORY ( 'part', '', ( #1775 ) ) ; +#915 = CARTESIAN_POINT ( 'NONE', ( -34.10232452170161110, 33.94812970446760403, -16.82672874840155686 ) ) ; +#916 = CARTESIAN_POINT ( 'NONE', ( -41.13454712838691307, 12.68826868899491522, 16.64362746466510856 ) ) ; +#917 = EDGE_CURVE ( 'NONE', #1642, #550, #452, .T. ) ; +#918 = CARTESIAN_POINT ( 'NONE', ( -31.98801666359724649, 37.35592637510115566, -12.22287686505414506 ) ) ; +#919 = CARTESIAN_POINT ( 'NONE', ( -32.37004627410350110, 35.27477152405436556, -10.39643848907219770 ) ) ; +#920 = DIRECTION ( 'NONE', ( -0.000000000000000000, -1.000000000000000000, -0.000000000000000000 ) ) ; +#921 = DIRECTION ( 'NONE', ( 0.000000000000000000, 0.000000000000000000, -1.000000000000000000 ) ) ; +#922 = DIRECTION ( 'NONE', ( 0.000000000000000000, 0.000000000000000000, -1.000000000000000000 ) ) ; +#923 = AXIS2_PLACEMENT_3D ( 'NONE', #2554, #1928, #618 ) ; +#924 = ORIENTED_EDGE ( 'NONE', *, *, #1581, .T. ) ; +#925 = CARTESIAN_POINT ( 'NONE', ( -34.23018503598186157, 34.76832575166653783, -17.87064825719161121 ) ) ; +#926 = DIRECTION ( 'NONE', ( -1.000000000000000000, 0.000000000000000000, 0.000000000000000000 ) ) ; +#927 = DIRECTION ( 'NONE', ( 0.000000000000000000, 0.000000000000000000, -1.000000000000000000 ) ) ; +#928 = CARTESIAN_POINT ( 'NONE', ( 42.17307833103743775, 9.123411929629760664, 15.40598249488271598 ) ) ; +#929 = CARTESIAN_POINT ( 'NONE', ( -32.10100602077799437, 32.59616665187411400, -13.56692531693406956 ) ) ; +#930 = CARTESIAN_POINT ( 'NONE', ( -43.34545552388527057, 11.25788144268259039, 11.08747574047080420 ) ) ; +#931 = CARTESIAN_POINT ( 'NONE', ( -31.94391093219630307, 37.26411557281593900, -11.97632202764112819 ) ) ; +#932 = CARTESIAN_POINT ( 'NONE', ( -34.03702749253581317, 34.88494135999115997, -8.223235512571532624 ) ) ; +#933 = CARTESIAN_POINT ( 'NONE', ( -31.00000000000000355, 44.04346725332046475, 12.50000000000000000 ) ) ; +#934 = DIRECTION ( 'NONE', ( 0.000000000000000000, 0.000000000000000000, -1.000000000000000000 ) ) ; +#935 = EDGE_CURVE ( 'NONE', #1250, #373, #553, .T. ) ; +#936 = CARTESIAN_POINT ( 'NONE', ( 32.15342044700667401, 43.76518374714815707, 14.18533669406338760 ) ) ; +#937 = ORIENTED_EDGE ( 'NONE', *, *, #691, .T. ) ; +#938 = ADVANCED_FACE ( 'NONE', ( #2473 ), #2031, .T. ) ; +#939 = LINE ( 'NONE', #953, #71 ) ; +#940 = AXIS2_PLACEMENT_3D ( 'NONE', #890, #1771, #49 ) ; +#941 = CARTESIAN_POINT ( 'NONE', ( -32.06546185742052302, 32.49184667508445301, -11.62773158287541087 ) ) ; +#942 = AXIS2_PLACEMENT_3D ( 'NONE', #2252, #1816, #1829 ) ; +#943 = CARTESIAN_POINT ( 'NONE', ( -43.34254294013596365, 11.26634105166322719, 16.79537387900263568 ) ) ; +#944 = CARTESIAN_POINT ( 'NONE', ( -36.40037353087242167, 31.42989469372711397, -17.95773641296150558 ) ) ; +#945 = CARTESIAN_POINT ( 'NONE', ( -34.92177046683571717, 34.35795269972074806, -7.627011478124432919 ) ) ; +#946 = LINE ( 'NONE', #2725, #2459 ) ; +#947 = PLANE ( 'NONE', #441 ) ; +#948 = FACE_OUTER_BOUND ( 'NONE', #2435, .T. ) ; +#949 = AXIS2_PLACEMENT_3D ( 'NONE', #34, #6, #438 ) ; +#950 = ADVANCED_FACE ( 'NONE', ( #2119, #653 ), #2131, .F. ) ; +#951 = ORIENTED_EDGE ( 'NONE', *, *, #519, .T. ) ; +#952 = EDGE_CURVE ( 'NONE', #116, #1698, #674, .T. ) ; +#953 = CARTESIAN_POINT ( 'NONE', ( 45.50000000000002132, 5.000000000000000000, -20.50000000000000000 ) ) ; +#954 = CARTESIAN_POINT ( 'NONE', ( -34.43307409746501691, 37.14392230042371068, 3.778127667654248789 ) ) ; +#955 = CARTESIAN_POINT ( 'NONE', ( -32.01665394174994361, 32.34971285684899556, -12.05831618826564444 ) ) ; +#956 = CARTESIAN_POINT ( 'NONE', ( -32.18121478833108995, 35.36173675890672286, -10.87020591212793086 ) ) ; +#957 = CARTESIAN_POINT ( 'NONE', ( 1.750000000000000888, 24.99999999999999645, 9.500000000000001776 ) ) ; +#958 = LINE ( 'NONE', #1809, #347 ) ; +#959 = CARTESIAN_POINT ( 'NONE', ( 37.50000000000000000, 5.000000000000000000, 7.000000000000004441 ) ) ; +#960 = ORIENTED_EDGE ( 'NONE', *, *, #1680, .F. ) ; +#961 = CARTESIAN_POINT ( 'NONE', ( -44.90380467601652015, 6.731651258784625114, 11.75704472016699143 ) ) ; +#962 = CARTESIAN_POINT ( 'NONE', ( -32.01713932801011708, 32.35111862366360214, -12.05200785716763079 ) ) ; +#963 = EDGE_CURVE ( 'NONE', #1225, #1630, #1565, .T. ) ; +#964 = CIRCLE ( 'NONE', #875, 5.000000000000001776 ) ; +#965 = VECTOR ( 'NONE', #2042, 1000.000000000000000 ) ; +#966 = DIRECTION ( 'NONE', ( 0.000000000000000000, 0.000000000000000000, -1.000000000000000000 ) ) ; +#967 = CARTESIAN_POINT ( 'NONE', ( -30.19042886650187896, 32.96641650756577491, -13.76088780830553127 ) ) ; +#968 = CARTESIAN_POINT ( 'NONE', ( -35.70873277584415462, 33.36784647862091902, -6.579185176894301712 ) ) ; +#969 = LINE ( 'NONE', #718, #2367 ) ; +#970 = CARTESIAN_POINT ( 'NONE', ( -40.72182540694797126, 14.10497510537457089, -7.000000000000002665 ) ) ; +#971 = CARTESIAN_POINT ( 'NONE', ( 36.80118201742516959, 30.26574514009140060, 18.06883033848986742 ) ) ; +#972 = ORIENTED_EDGE ( 'NONE', *, *, #1730, .T. ) ; +#973 = CARTESIAN_POINT ( 'NONE', ( -44.36934426592458891, 8.283993259259442965, 9.816037424464186145 ) ) ; +#974 = ORIENTED_EDGE ( 'NONE', *, *, #342, .F. ) ; +#975 = CARTESIAN_POINT ( 'NONE', ( -33.58269050972878489, 39.61386419851559992, 4.499999999999999112 ) ) ; +#976 = CARTESIAN_POINT ( 'NONE', ( -31.94552866371482125, 44.36900610828815417, 12.92542883016145439 ) ) ; +#977 = CIRCLE ( 'NONE', #2413, 1.000000000000000888 ) ; +#978 = DIRECTION ( 'NONE', ( 0.000000000000000000, -1.000000000000000000, 0.000000000000000000 ) ) ; +#979 = EDGE_CURVE ( 'NONE', #2692, #1225, #2599, .T. ) ; +#980 = CARTESIAN_POINT ( 'NONE', ( -35.89971384576190871, 32.88406237842237090, -7.200207811996323315 ) ) ; +#981 = CARTESIAN_POINT ( 'NONE', ( -34.80337923684058410, 33.55602045099649899, -17.29676711764147612 ) ) ; +#982 = CARTESIAN_POINT ( 'NONE', ( 43.47300727646558016, 10.88740696221084470, 13.92728719611736743 ) ) ; +#983 = CARTESIAN_POINT ( 'NONE', ( -37.50000000000000000, 25.16419609954000691, -7.000000000000004441 ) ) ; +#984 = CARTESIAN_POINT ( 'NONE', ( -43.13506908963908160, 11.86894952563805461, -14.35735567708467109 ) ) ; +#985 = ORIENTED_EDGE ( 'NONE', *, *, #1012, .T. ) ; +#986 = CARTESIAN_POINT ( 'NONE', ( -41.70300804589836474, 16.02837548772422949, 6.859094606482983636 ) ) ; +#987 = AXIS2_PLACEMENT_3D ( 'NONE', #1742, #1101, #1940 ) ; +#988 = VERTEX_POINT ( 'NONE', #1570 ) ; +#989 = FACE_OUTER_BOUND ( 'NONE', #2525, .T. ) ; +#990 = CARTESIAN_POINT ( 'NONE', ( -45.50000000000000000, 0.000000000000000000, 20.50000000000000000 ) ) ; +#991 = ORIENTED_EDGE ( 'NONE', *, *, #2754, .F. ) ; +#992 =( BOUNDED_CURVE ( ) B_SPLINE_CURVE ( 3, ( #1743, #2135, #1119, #846 ), + .UNSPECIFIED., .F., .T. ) + B_SPLINE_CURVE_WITH_KNOTS ( ( 4, 4 ), + ( 3.141592653589793116, 6.283185307179586232 ), + .UNSPECIFIED. ) + CURVE ( ) GEOMETRIC_REPRESENTATION_ITEM ( ) RATIONAL_B_SPLINE_CURVE ( ( 1.000000000000000000, 0.3333333333333333703, 0.3333333333333333703, 1.000000000000000000 ) ) + REPRESENTATION_ITEM ( '' ) ); +#993 = CARTESIAN_POINT ( 'NONE', ( -44.67819521171908548, 7.386934682066240043, -10.65018635782133316 ) ) ; +#994 = CARTESIAN_POINT ( 'NONE', ( -35.49382296729514508, 33.72405603934700480, -6.646229837023073017 ) ) ; +#995 = CARTESIAN_POINT ( 'NONE', ( 37.50000000000000000, 75.00000000000001421, 7.000000000000004441 ) ) ; +#996 = ADVANCED_FACE ( 'NONE', ( #1763 ), #50, .T. ) ; +#997 = CARTESIAN_POINT ( 'NONE', ( 42.96469508733385823, 6.406112403811383693, 11.87134553244899671 ) ) ; +#998 = CARTESIAN_POINT ( 'NONE', ( -33.26615356463607043, 35.00497175787329951, -7.628078471032430308 ) ) ; +#999 = CARTESIAN_POINT ( 'NONE', ( -40.90041223295836659, 13.49195890305930057, -16.84657827221492354 ) ) ; +#1000 = VERTEX_POINT ( 'NONE', #1142 ) ; +#1001 = CARTESIAN_POINT ( 'NONE', ( -42.74090254271514766, 13.01380754396722672, 7.602985723577359245 ) ) ; +#1002 = VERTEX_POINT ( 'NONE', #1781 ) ; +#1003 = ORIENTED_EDGE ( 'NONE', *, *, #1251, .T. ) ; +#1004 = DIRECTION ( 'NONE', ( -1.000000000000000000, 0.000000000000000000, 0.000000000000000000 ) ) ; +#1005 = CARTESIAN_POINT ( 'NONE', ( -32.27750898416555003, 43.40476818713303686, 14.59440178004760291 ) ) ; +#1006 = DIRECTION ( 'NONE', ( 0.000000000000000000, 0.000000000000000000, 1.000000000000000000 ) ) ; +#1007 = AXIS2_PLACEMENT_3D ( 'NONE', #1945, #1500, #2338 ) ; +#1008 = ORIENTED_EDGE ( 'NONE', *, *, #2057, .F. ) ; +#1009 = CARTESIAN_POINT ( 'NONE', ( -35.86915977639390718, 32.97280677233770518, -20.50000000000000355 ) ) ; +#1010 = CARTESIAN_POINT ( 'NONE', ( -32.19618542919716475, 32.86981725267617804, -13.95978199525807639 ) ) ; +#1011 = CARTESIAN_POINT ( 'NONE', ( 44.77913493337637618, 7.093754932011645309, 11.02328810641580858 ) ) ; +#1012 = EDGE_CURVE ( 'NONE', #1729, #1962, #1834, .T. ) ; +#1013 = CARTESIAN_POINT ( 'NONE', ( 32.15342044700702218, 43.76518374714715520, 10.81466330593660530 ) ) ; +#1014 = CARTESIAN_POINT ( 'NONE', ( -42.44850599150973380, 8.177980386844691196, -14.91115635319375698 ) ) ; +#1015 = EDGE_LOOP ( 'NONE', ( #972, #1212 ) ) ; +#1016 = EDGE_CURVE ( 'NONE', #2325, #1677, #1179, .T. ) ; +#1017 = CARTESIAN_POINT ( 'NONE', ( -42.81541933757661411, 6.918515559511693169, 11.07567117061601891 ) ) ; +#1018 = ORIENTED_EDGE ( 'NONE', *, *, #2386, .T. ) ; +#1019 = EDGE_LOOP ( 'NONE', ( #354, #1333, #1405, #1723 ) ) ; +#1020 = CARTESIAN_POINT ( 'NONE', ( -30.24108867664220668, 33.09510371101609394, 4.500000000000000888 ) ) ; +#1021 = CARTESIAN_POINT ( 'NONE', ( -30.19016499665614717, 32.96574621937423188, -11.24027237217475239 ) ) ; +#1022 = CARTESIAN_POINT ( 'NONE', ( -35.86915977639390718, 32.97280677233769808, -20.50000000000000000 ) ) ; +#1023 = ORIENTED_EDGE ( 'NONE', *, *, #413, .T. ) ; +#1024 = CARTESIAN_POINT ( 'NONE', ( -42.80493708065814928, 6.954496899633142881, -11.04381004085507811 ) ) ; +#1025 = DIRECTION ( 'NONE', ( -1.000000000000000000, 0.000000000000000000, 0.000000000000000000 ) ) ; +#1026 = CARTESIAN_POINT ( 'NONE', ( -33.45555914273361253, 35.07030372904624471, -16.23168523132997976 ) ) ; +#1027 = VECTOR ( 'NONE', #1490, 1000.000000000000000 ) ; +#1028 = STYLED_ITEM ( 'NONE', ( #112 ), #1362 ) ; +#1029 = CARTESIAN_POINT ( 'NONE', ( 44.94552866371285660, 6.610463800732986783, 12.50000000000000000 ) ) ; +#1030 = LINE ( 'NONE', #2577, #2593 ) ; +#1031 = CARTESIAN_POINT ( 'NONE', ( -42.87529148811312751, 12.62347441469967535, -17.28688690812499829 ) ) ; +#1032 = ORIENTED_EDGE ( 'NONE', *, *, #1105, .T. ) ; +#1033 = DIRECTION ( 'NONE', ( -0.000000000000000000, -1.000000000000000000, -0.000000000000000000 ) ) ; +#1034 = ORIENTED_EDGE ( 'NONE', *, *, #1514, .T. ) ; +#1035 = CARTESIAN_POINT ( 'NONE', ( 4.000000000000000000, 24.99999999999999645, 9.500000000000001776 ) ) ; +#1036 = ADVANCED_FACE ( 'NONE', ( #1584 ), #512, .T. ) ; +#1037 = CARTESIAN_POINT ( 'NONE', ( 0.000000000000000000, 24.99999999999999645, 20.50000000000000000 ) ) ; +#1038 = AXIS2_PLACEMENT_3D ( 'NONE', #2487, #978, #374 ) ; +#1039 = DIRECTION ( 'NONE', ( 0.000000000000000000, 0.000000000000000000, -1.000000000000000000 ) ) ; +#1040 = AXIS2_PLACEMENT_3D ( 'NONE', #806, #2321, #1240 ) ; +#1041 = VERTEX_POINT ( 'NONE', #1910 ) ; +#1042 = CARTESIAN_POINT ( 'NONE', ( 37.50000000000000000, 75.00000000000001421, 9.749999999999998224 ) ) ; +#1043 = CARTESIAN_POINT ( 'NONE', ( 45.50000000000001421, 5.000000000000000000, 2.428932188134526271 ) ) ; +#1044 = CARTESIAN_POINT ( 'NONE', ( 44.72738788084891581, 7.244054414484709881, 10.81670229254628701 ) ) ; +#1045 = CARTESIAN_POINT ( 'NONE', ( 43.34254294013596365, 11.26634105166327693, 8.204626120997366101 ) ) ; +#1046 = CARTESIAN_POINT ( 'NONE', ( -39.73300686199627307, 17.49918845664421951, -17.54670450738533916 ) ) ; +#1047 = ORIENTED_EDGE ( 'NONE', *, *, #233, .T. ) ; +#1048 = DIRECTION ( 'NONE', ( -0.9455286637128577087, 0.3255388549733774228, 0.000000000000000000 ) ) ; +#1049 = ORIENTED_EDGE ( 'NONE', *, *, #2656, .F. ) ; +#1050 = DIRECTION ( 'NONE', ( -0.000000000000000000, -0.000000000000000000, -1.000000000000000000 ) ) ; +#1051 = CARTESIAN_POINT ( 'NONE', ( 37.50000000000000000, 25.16419609954003533, 7.000000000000004441 ) ) ; +#1052 = EDGE_CURVE ( 'NONE', #1870, #1002, #136, .T. ) ; +#1053 = ORIENTED_EDGE ( 'NONE', *, *, #1482, .F. ) ; +#1054 = CARTESIAN_POINT ( 'NONE', ( -41.24826085141516074, 12.29793555972540808, -8.449557231586465988 ) ) ; +#1055 = CARTESIAN_POINT ( 'NONE', ( -40.72182540694797126, 14.10497510537457089, -18.00000000000000000 ) ) ; +#1056 = APPLICATION_CONTEXT ( 'automotive_design' ) ; +#1057 = DIRECTION ( 'NONE', ( 1.000000000000000000, 0.000000000000000000, 0.000000000000000000 ) ) ; +#1058 = CARTESIAN_POINT ( 'NONE', ( 33.32773819346318334, 40.35437403084399932, 8.879475727009843666 ) ) ; +#1059 = CARTESIAN_POINT ( 'NONE', ( -43.00000000000000000, 6.284924945760252513, -12.61334297384667380 ) ) ; +#1060 = VERTEX_POINT ( 'NONE', #1338 ) ; +#1061 = DIRECTION ( 'NONE', ( -1.000000000000000000, 0.000000000000000000, 0.000000000000000000 ) ) ; +#1062 = ORIENTED_EDGE ( 'NONE', *, *, #1218, .F. ) ; +#1063 = CARTESIAN_POINT ( 'NONE', ( 13.87540813888669788, 5.577367205542728357, -0.5000000000000004441 ) ) ; +#1064 = CYLINDRICAL_SURFACE ( 'NONE', #1102, 2.750000000000002665 ) ; +#1065 =( BOUNDED_CURVE ( ) B_SPLINE_CURVE ( 3, ( #810, #298, #509, #2101 ), + .UNSPECIFIED., .F., .F. ) + B_SPLINE_CURVE_WITH_KNOTS ( ( 4, 4 ), + ( 0.000000000000000000, 1.570796326794896780 ), + .UNSPECIFIED. ) + CURVE ( ) GEOMETRIC_REPRESENTATION_ITEM ( ) RATIONAL_B_SPLINE_CURVE ( ( 1.000000000000000000, 0.8047378541243649375, 0.8047378541243649375, 1.000000000000000000 ) ) + REPRESENTATION_ITEM ( '' ) ); +#1066 = ORIENTED_EDGE ( 'NONE', *, *, #1406, .T. ) ; +#1067 = ADVANCED_FACE ( 'NONE', ( #1308, #1925 ), #2168, .F. ) ; +#1068 = CARTESIAN_POINT ( 'NONE', ( -42.44850599151052251, 8.177980386844092564, -10.08884364680770673 ) ) ; +#1069 = CARTESIAN_POINT ( 'NONE', ( 0.000000000000000000, 24.99999999999999645, 4.500000000000000888 ) ) ; +#1070 = EDGE_CURVE ( 'NONE', #1002, #1870, #2203, .T. ) ; +#1071 = CARTESIAN_POINT ( 'NONE', ( 42.92726601009341891, 6.534591258040115314, 13.39603710458456831 ) ) ; +#1072 = CARTESIAN_POINT ( 'NONE', ( 37.65733024777571814, 27.77905981872056529, 6.883443643188544847 ) ) ; +#1073 = CIRCLE ( 'NONE', #1969, 5.499999999999994671 ) ; +#1074 = CARTESIAN_POINT ( 'NONE', ( 37.50000000000000000, 25.16419609954003533, 17.99999999999999645 ) ) ; +#1075 = ORIENTED_EDGE ( 'NONE', *, *, #376, .T. ) ; +#1076 = CYLINDRICAL_SURFACE ( 'NONE', #2349, 2.750000000000002665 ) ; +#1077 = ORIENTED_EDGE ( 'NONE', *, *, #651, .F. ) ; +#1078 = PLANE ( 'NONE', #1381 ) ; +#1079 = DIRECTION ( 'NONE', ( -1.000000000000000000, 0.000000000000000000, 0.000000000000000000 ) ) ; +#1080 = CARTESIAN_POINT ( 'NONE', ( -32.40418784956184339, 33.25646888864360307, -14.57236020808944943 ) ) ; +#1081 = ORIENTED_EDGE ( 'NONE', *, *, #1957, .F. ) ; +#1082 = DIRECTION ( 'NONE', ( 0.000000000000000000, 0.000000000000000000, -1.000000000000000000 ) ) ; +#1083 = CARTESIAN_POINT ( 'NONE', ( -43.00000000000000000, 6.284924945759544634, -12.50000000000000000 ) ) ; +#1084 = ORIENTED_EDGE ( 'NONE', *, *, #2202, .F. ) ; +#1085 = FACE_OUTER_BOUND ( 'NONE', #1495, .T. ) ; +#1086 = CARTESIAN_POINT ( 'NONE', ( 15.50000000000002132, 5.000000000000000000, -20.50000000000000000 ) ) ; +#1087 = CARTESIAN_POINT ( 'NONE', ( 0.000000000000000000, 45.00000000000000000, 20.50000000000000000 ) ) ; +#1088 = EDGE_CURVE ( 'NONE', #851, #2404, #187, .T. ) ; +#1089 = CARTESIAN_POINT ( 'NONE', ( 43.00000000000000000, 6.284924945759599701, 12.50000000000000000 ) ) ; +#1090 = CARTESIAN_POINT ( 'NONE', ( 1.750000000000000888, 65.00000000000000000, 9.500000000000001776 ) ) ; +#1091 = ORIENTED_EDGE ( 'NONE', *, *, #2553, .F. ) ; +#1092 = APPLICATION_PROTOCOL_DEFINITION ( 'draft international standard', 'automotive_design', 1998, #478 ) ; +#1093 = CARTESIAN_POINT ( 'NONE', ( -34.10555997850872245, 33.94718821219309035, -8.170759618827506898 ) ) ; +#1094 = CARTESIAN_POINT ( 'NONE', ( -30.93595433358951752, 34.14523117820939291, -15.30481300744316187 ) ) ; +#1095 = EDGE_LOOP ( 'NONE', ( #2516, #1736, #1616, #1032 ) ) ; +#1096 = CARTESIAN_POINT ( 'NONE', ( -43.13506908964116349, 11.86894952563452499, -10.64264432290875817 ) ) ; +#1097 = CARTESIAN_POINT ( 'NONE', ( -39.29637667370440823, 23.01844414046954412, 19.00000000000000000 ) ) ; +#1098 = VERTEX_POINT ( 'NONE', #629 ) ; +#1099 = CYLINDRICAL_SURFACE ( 'NONE', #2148, 30.00000000000000711 ) ; +#1100 = DIRECTION ( 'NONE', ( -0.000000000000000000, -0.000000000000000000, -1.000000000000000000 ) ) ; +#1101 = DIRECTION ( 'NONE', ( 0.000000000000000000, 0.000000000000000000, -1.000000000000000000 ) ) ; +#1102 = AXIS2_PLACEMENT_3D ( 'NONE', #223, #2557, #649 ) ; +#1103 = DIRECTION ( 'NONE', ( 0.000000000000000000, 0.000000000000000000, -1.000000000000000000 ) ) ; +#1104 = AXIS2_PLACEMENT_3D ( 'NONE', #2645, #2693, #1187 ) ; +#1105 = EDGE_CURVE ( 'NONE', #1315, #2690, #1292, .T. ) ; +#1106 = EDGE_LOOP ( 'NONE', ( #1285, #524, #2733, #210 ) ) ; +#1107 = EDGE_CURVE ( 'NONE', #758, #603, #992, .T. ) ; +#1108 = CARTESIAN_POINT ( 'NONE', ( -30.24108867664220668, 33.09510371101609394, -13.98362640057776396 ) ) ; +#1109 = CARTESIAN_POINT ( 'NONE', ( -33.12690805908333402, 40.17524856008240874, 9.145056144941321463 ) ) ; +#1110 = CARTESIAN_POINT ( 'NONE', ( -33.79662054001477145, 34.97389226050179900, -16.56937704322189120 ) ) ; +#1111 = CARTESIAN_POINT ( 'NONE', ( 33.59905643722281354, 39.56632930884568822, 16.41383903443620795 ) ) ; +#1112 = ORIENTED_EDGE ( 'NONE', *, *, #60, .T. ) ; +#1113 = CARTESIAN_POINT ( 'NONE', ( -42.46419766629922066, 13.81749775803332092, -7.363134769199811913 ) ) ; +#1114 = CARTESIAN_POINT ( 'NONE', ( -42.81541933757666385, 6.918515559511272173, 13.92432882938381944 ) ) ; +#1115 = ORIENTED_EDGE ( 'NONE', *, *, #94, .T. ) ; +#1116 = CARTESIAN_POINT ( 'NONE', ( -31.62984376346780380, 36.62285101022547451, -13.44281979267887017 ) ) ; +#1117 = DIRECTION ( 'NONE', ( 0.000000000000000000, 0.000000000000000000, -1.000000000000000000 ) ) ; +#1118 = CARTESIAN_POINT ( 'NONE', ( -44.00000000000000000, 6.284924945759554404, 12.50000000000000000 ) ) ; +#1119 = CARTESIAN_POINT ( 'NONE', ( -44.94552866371285660, 6.610463800732931716, 25.49999999999999645 ) ) ; +#1120 = PLANE ( 'NONE', #1491 ) ; +#1121 = AXIS2_PLACEMENT_3D ( 'NONE', #2337, #1282, #2309 ) ; +#1122 = VECTOR ( 'NONE', #1761, 1000.000000000000000 ) ; +#1123 = CARTESIAN_POINT ( 'NONE', ( 0.000000000000000000, 24.99999999999999645, 20.50000000000000000 ) ) ; +#1124 = FACE_OUTER_BOUND ( 'NONE', #2339, .T. ) ; +#1125 = CARTESIAN_POINT ( 'NONE', ( 38.93961336430090370, 20.22258681569049799, 17.85684972154116323 ) ) ; +#1126 = DIRECTION ( 'NONE', ( 0.000000000000000000, -0.8591838389225119332, -0.5116670117707171617 ) ) ; +#1127 = CARTESIAN_POINT ( 'NONE', ( -35.24008933273383093, 34.79994392319499497, 17.60429368842434172 ) ) ; +#1128 = CARTESIAN_POINT ( 'NONE', ( -30.13401351642946935, 32.82655668348647993, -11.60121286152213926 ) ) ; +#1129 = CARTESIAN_POINT ( 'NONE', ( -32.12053186653007941, 35.40005520948766105, -11.04217675959103317 ) ) ; +#1130 = VECTOR ( 'NONE', #1607, 1000.000000000000000 ) ; +#1131 = CARTESIAN_POINT ( 'NONE', ( -37.50000000000000000, 25.16419609954000691, -7.000000000000004441 ) ) ; +#1132 = DIRECTION ( 'NONE', ( 1.000000000000000000, 0.000000000000000000, 0.000000000000000000 ) ) ; +#1133 = CARTESIAN_POINT ( 'NONE', ( 32.00000000000000000, 44.04346725331898682, 12.85997824090589248 ) ) ; +#1134 = ORIENTED_EDGE ( 'NONE', *, *, #2369, .T. ) ; +#1135 = CARTESIAN_POINT ( 'NONE', ( -35.55598056228235038, 33.62873098028818220, -18.37343026423007331 ) ) ; +#1136 = FACE_OUTER_BOUND ( 'NONE', #2053, .T. ) ; +#1137 = DIRECTION ( 'NONE', ( 0.000000000000000000, 0.000000000000000000, -1.000000000000000000 ) ) ; +#1138 = CARTESIAN_POINT ( 'NONE', ( 41.87309194091710651, 10.15314363899532069, 15.85494385505801773 ) ) ; +#1139 = CARTESIAN_POINT ( 'NONE', ( -31.62984376346780380, 36.62285101022548162, -11.55718020732113160 ) ) ; +#1140 = CARTESIAN_POINT ( 'NONE', ( -43.67796458835100282, 10.29210778281889027, 12.19103034307719824 ) ) ; +#1141 = EDGE_CURVE ( 'NONE', #1000, #1174, #1173, .T. ) ; +#1142 = CARTESIAN_POINT ( 'NONE', ( 37.50000000000000000, 25.16419609954003533, 17.99999999999999645 ) ) ; +#1143 = CARTESIAN_POINT ( 'NONE', ( -34.05650722053313473, 33.95958742075126224, -8.209730131506509210 ) ) ; +#1144 = CYLINDRICAL_SURFACE ( 'NONE', #443, 3.000000000000002665 ) ; +#1145 = FACE_OUTER_BOUND ( 'NONE', #2113, .T. ) ; +#1146 = CARTESIAN_POINT ( 'NONE', ( -32.14518621856249325, 32.72879920981659296, -13.75537618510426086 ) ) ; +#1147 = CIRCLE ( 'NONE', #1256, 4.000000000000001776 ) ; +#1148 = ORIENTED_EDGE ( 'NONE', *, *, #1921, .F. ) ; +#1149 =( BOUNDED_SURFACE ( ) B_SPLINE_SURFACE ( 3, 2, ( + ( #1878, #625, #2341 ), + ( #871, #597, #1461 ), + ( #389, #1935, #1245 ), + ( #2742, #1720, #14 ), + ( #1907, #2105, #1895 ), + ( #418, #827, #433 ), + ( #611, #1273, #1474 ), + ( #1287, #2132, #3 ), + ( #856, #930, #1793 ), + ( #725, #2398, #1780 ), + ( #256, #1993, #1114 ), + ( #268, #670, #1964 ), + ( #506, #2428, #2175 ), + ( #44, #1140, #2005 ), + ( #902, #1582, #1332 ), + ( #1980, #59, #2634 ), + ( #2439, #516, #283 ), + ( #2205, #1361, #2215 ), + ( #943, #463, #1752 ), + ( #714, #1373, #916 ), + ( #2646, #1347, #1317 ), + ( #1153, #1536, #1555 ), + ( #1764, #2619, #240 ), + ( #1949, #1545, #73 ), + ( #1097, #2607, #29 ), + ( #685, #1738, #294 ), + ( #2410, #885, #492 ), + ( #2591, #1127, #475 ), + ( #1571, #2385, #85 ), + ( #2189, #698, #1618 ), + ( #1165, #321, #527 ), + ( #2044, #1399, #2056 ), + ( #1606, #343, #1645 ), + ( #1005, #760, #2265 ), + ( #1592, #2668, #2071 ), + ( #109, #121, #2708 ), + ( #976, #2462, #2449 ), + ( #2472, #135, #790 ) ), + .UNSPECIFIED., .F., .F., .T. ) + B_SPLINE_SURFACE_WITH_KNOTS ( ( 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4 ), + ( 3, 3 ), + ( 0.000000000000000000, 0.04908738521234051744, 0.09817477042468103487, 0.1472621556370215523, 0.1963495408493620697, 0.2945243112740431046, 0.3926990816987241395, 0.4908738521234051744, 0.5890486225480862092, 0.7853981633974482790, 0.9817477042468103487, 1.178097245096172418, 1.570796326794896558, 1.963495408493620697, 2.356194490192344837, 2.552544031041707129, 2.748893571891068976, 2.945243112740430824, 3.141592653589793116 ), + ( 0.000000000000000000, 1.000000000000000000 ), + .UNSPECIFIED. ) + GEOMETRIC_REPRESENTATION_ITEM ( ) RATIONAL_B_SPLINE_SURFACE ( ( + ( 1.000000000000000000, 0.1650323245415012685, 1.000000000000000000), + ( 1.000000000000000000, 0.1650312009201844454, 1.000000000000000000), + ( 1.000000000000000000, 0.1656105720154912864, 1.000000000000000000), + ( 1.000000000000000000, 0.1678868551765326789, 1.000000000000000000), + ( 1.000000000000000000, 0.1695842193436412626, 1.000000000000000000), + ( 1.000000000000000000, 0.1739978385179177800, 1.000000000000000000), + ( 1.000000000000000000, 0.1767131491670237697, 1.000000000000000000), + ( 1.000000000000000000, 0.1830235777788156992, 1.000000000000000000), + ( 1.000000000000000000, 0.1866179000439102120, 1.000000000000000000), + ( 1.000000000000000000, 0.1984960600878372672, 1.000000000000000000), + ( 1.000000000000000000, 0.2078644858773363580, 1.000000000000000000), + ( 1.000000000000000000, 0.2284507283937017852, 1.000000000000000000), + ( 1.000000000000000000, 0.2396680134330874401, 1.000000000000000000), + ( 1.000000000000000000, 0.2632145179655339673, 1.000000000000000000), + ( 1.000000000000000000, 0.2755469356012855697, 1.000000000000000000), + ( 1.000000000000000000, 0.3008525186329233381, 1.000000000000000000), + ( 1.000000000000000000, 0.3138283910420501810, 1.000000000000000000), + ( 1.000000000000000000, 0.3532598395141759440, 1.000000000000000000), + ( 1.000000000000000000, 0.3801944580800665219, 1.000000000000000000), + ( 1.000000000000000000, 0.4339434541711514881, 1.000000000000000000), + ( 1.000000000000000000, 0.4607773684084325860, 1.000000000000000000), + ( 1.000000000000000000, 0.5135864445221741681, 1.000000000000000000), + ( 1.000000000000000000, 0.5395685366565537988, 1.000000000000000000), + ( 1.000000000000000000, 0.6154803776381509994, 1.000000000000000000), + ( 1.000000000000000000, 0.6633476856979385605, 1.000000000000000000), + ( 1.000000000000000000, 0.7508658766751572511, 1.000000000000000000), + ( 1.000000000000000000, 0.7905347754417177963, 1.000000000000000000), + ( 1.000000000000000000, 0.8598216432928615927, 1.000000000000000000), + ( 1.000000000000000000, 0.8894434017614355481, 1.000000000000000000), + ( 1.000000000000000000, 0.9253744439782182196, 1.000000000000000000), + ( 1.000000000000000000, 0.9359386994017488970, 1.000000000000000000), + ( 1.000000000000000000, 0.9541292101921223789, 1.000000000000000000), + ( 1.000000000000000000, 0.9617554693256525900, 1.000000000000000000), + ( 1.000000000000000000, 0.9739896480940225532, 1.000000000000000000), + ( 1.000000000000000000, 0.9785975666657328320, 1.000000000000000000), + ( 1.000000000000000000, 0.9847468226704357841, 1.000000000000000000), + ( 1.000000000000000000, 0.9862886620238880964, 1.000000000000000000), + ( 1.000000000000000000, 0.9862881586313551052, 1.000000000000000000) ) ) + REPRESENTATION_ITEM ( '' ) SURFACE ( ) ); +#1150 = CARTESIAN_POINT ( 'NONE', ( -34.82445533374842483, 34.40873363110451777, -18.11687117007166137 ) ) ; +#1151 = CARTESIAN_POINT ( 'NONE', ( 45.50000000000002132, 0.000000000000000000, 0.000000000000000000 ) ) ; +#1152 = CARTESIAN_POINT ( 'NONE', ( -32.02749458758146517, 32.38112555743335008, -13.05953186127941557 ) ) ; +#1153 = CARTESIAN_POINT ( 'NONE', ( -41.70300804589821553, 16.02837548772466292, 18.14090539351757059 ) ) ; +#1154 = ADVANCED_FACE ( 'NONE', ( #261 ), #2344, .F. ) ; +#1155 = CARTESIAN_POINT ( 'NONE', ( -36.36104731350427954, 31.54411781998817688, -18.67996665249634347 ) ) ; +#1156 = CARTESIAN_POINT ( 'NONE', ( -34.41296052421962059, 34.70515261446727351, -7.940740440419745916 ) ) ; +#1157 = DIRECTION ( 'NONE', ( 0.000000000000000000, -1.000000000000000000, 0.000000000000000000 ) ) ; +#1158 = CARTESIAN_POINT ( 'NONE', ( 31.94552866371300226, 44.36900610829343350, 12.92542883016144728 ) ) ; +#1159 = EDGE_CURVE ( 'NONE', #2587, #1516, #1458, .T. ) ; +#1160 = ORIENTED_EDGE ( 'NONE', *, *, #1427, .T. ) ; +#1161 = AXIS2_PLACEMENT_3D ( 'NONE', #1169, #299, #2047 ) ; +#1162 = CARTESIAN_POINT ( 'NONE', ( 37.50000000000000000, 0.000000000000000000, 12.50000000000000000 ) ) ; +#1163 = AXIS2_PLACEMENT_3D ( 'NONE', #306, #2241, #1190 ) ; +#1164 =( GEOMETRIC_REPRESENTATION_CONTEXT ( 3 ) GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT ( ( #2237 ) ) GLOBAL_UNIT_ASSIGNED_CONTEXT ( ( #1835, #1207, #1880 ) ) REPRESENTATION_CONTEXT ( 'NONE', 'WORKASPACE' ) ); +#1165 = CARTESIAN_POINT ( 'NONE', ( -33.27732909717364151, 40.50078741505868862, 16.46493364688652150 ) ) ; +#1166 = CARTESIAN_POINT ( 'NONE', ( -32.00008894653174707, 37.38113046985179011, -12.63708486437931988 ) ) ; +#1167 = CARTESIAN_POINT ( 'NONE', ( -31.71517016143365453, 36.15757294142542833, -12.78387847678332179 ) ) ; +#1168 = CARTESIAN_POINT ( 'NONE', ( -28.36585991138575125, 54.76616564920128383, -135.3085362679971126 ) ) ; +#1169 = CARTESIAN_POINT ( 'NONE', ( 37.50000000000000000, 75.00000000000001421, 12.50000000000000000 ) ) ; +#1170 = VECTOR ( 'NONE', #541, 1000.000000000000000 ) ; +#1171 = EDGE_CURVE ( 'NONE', #1956, #1459, #398, .T. ) ; +#1172 = CARTESIAN_POINT ( 'NONE', ( 15.50000000000002132, 5.000000000000000000, -0.5000000000000004441 ) ) ; +#1173 =( BOUNDED_CURVE ( ) B_SPLINE_CURVE ( 3, ( #1074, #1697, #423, #1277 ), + .UNSPECIFIED., .F., .F. ) + B_SPLINE_CURVE_WITH_KNOTS ( ( 4, 4 ), + ( 4.712388980384689674, 6.283185307179586232 ), + .UNSPECIFIED. ) + CURVE ( ) GEOMETRIC_REPRESENTATION_ITEM ( ) RATIONAL_B_SPLINE_CURVE ( ( 1.000000000000000000, 0.8047378541243649375, 0.8047378541243649375, 1.000000000000000000 ) ) + REPRESENTATION_ITEM ( '' ) ); +#1174 = VERTEX_POINT ( 'NONE', #1089 ) ; +#1175 = UNCERTAINTY_MEASURE_WITH_UNIT (LENGTH_MEASURE( 1.000000000000000082E-05 ), #82, 'distance_accuracy_value', 'NONE'); +#1176 = CARTESIAN_POINT ( 'NONE', ( -39.93733163486207616, 16.79782431294281864, 7.556418717552698006 ) ) ; +#1177 = LINE ( 'NONE', #1020, #2506 ) ; +#1178 = DIRECTION ( 'NONE', ( -0.000000000000000000, 1.000000000000000000, -0.000000000000000000 ) ) ; +#1179 = LINE ( 'NONE', #750, #1130 ) ; +#1180 = CARTESIAN_POINT ( 'NONE', ( -35.79885818798025099, 33.17699796467663731, -6.552627828686637734 ) ) ; +#1181 = CARTESIAN_POINT ( 'NONE', ( -35.31999555688393855, 32.64726791736441669, -17.54951290997401259 ) ) ; +#1182 = CARTESIAN_POINT ( 'NONE', ( -32.10226390623606818, 32.59994293174793256, -11.42770916596734487 ) ) ; +#1183 = CARTESIAN_POINT ( 'NONE', ( 41.26442097287530686, 17.30225306865727930, 16.79236178307509775 ) ) ; +#1184 = ORIENTED_EDGE ( 'NONE', *, *, #766, .T. ) ; +#1185 = CARTESIAN_POINT ( 'NONE', ( -44.85957031200517520, 6.860130113013125808, 11.44104705821813894 ) ) ; +#1186 = ORIENTED_EDGE ( 'NONE', *, *, #2403, .T. ) ; +#1187 = DIRECTION ( 'NONE', ( 0.000000000000000000, 0.000000000000000000, -1.000000000000000000 ) ) ; +#1188 = AXIS2_PLACEMENT_3D ( 'NONE', #1283, #2140, #1079 ) ; +#1189 = EDGE_CURVE ( 'NONE', #254, #1677, #1757, .T. ) ; +#1190 = DIRECTION ( 'NONE', ( 0.000000000000000000, 0.000000000000000000, -1.000000000000000000 ) ) ; +#1191 = CARTESIAN_POINT ( 'NONE', ( -42.99649525893036639, 6.296955301573155417, -12.27331410414104873 ) ) ; +#1192 = PLANE ( 'NONE', #2055 ) ; +#1193 = DIRECTION ( 'NONE', ( -1.000000000000000000, 0.000000000000000000, 0.000000000000000000 ) ) ; +#1194 = LINE ( 'NONE', #753, #631 ) ; +#1195 = CARTESIAN_POINT ( 'NONE', ( 42.74090254271488476, 13.01380754396802608, 17.39701427642179610 ) ) ; +#1196 = ORIENTED_EDGE ( 'NONE', *, *, #1070, .T. ) ; +#1197 = CARTESIAN_POINT ( 'NONE', ( -41.13454712838774441, 12.68826868899362204, 8.356372535335728102 ) ) ; +#1198 = ORIENTED_EDGE ( 'NONE', *, *, #2014, .F. ) ; +#1199 = CARTESIAN_POINT ( 'NONE', ( -37.50000000000000000, 75.00000000000001421, 12.50000000000000000 ) ) ; +#1200 = CARTESIAN_POINT ( 'NONE', ( 13.87540813888669611, 5.577367205542723916, -20.50000000000000000 ) ) ; +#1201 = EDGE_CURVE ( 'NONE', #2058, #839, #289, .T. ) ; +#1202 = CIRCLE ( 'NONE', #2147, 4.000000000000001776 ) ; +#1203 = ORIENTED_EDGE ( 'NONE', *, *, #213, .T. ) ; +#1204 = CARTESIAN_POINT ( 'NONE', ( -42.94403121265326462, 6.477043111662819541, -11.70919611629001444 ) ) ; +#1205 = CARTESIAN_POINT ( 'NONE', ( -35.27997614909728696, 34.00828475802443762, -7.446164546780327242 ) ) ; +#1206 = CARTESIAN_POINT ( 'NONE', ( -42.99999999999999289, 6.284924945759550852, 15.72182540694797659 ) ) ; +#1207 =( NAMED_UNIT ( * ) PLANE_ANGLE_UNIT ( ) SI_UNIT ( $, .RADIAN. ) ); +#1208 = CARTESIAN_POINT ( 'NONE', ( -30.33478770275461756, 33.33312011105832795, -10.74992447058079925 ) ) ; +#1209 = CARTESIAN_POINT ( 'NONE', ( -42.66701332672615621, 7.427933254001917618, -14.38807306752410220 ) ) ; +#1210 = ORIENTED_EDGE ( 'NONE', *, *, #1981, .F. ) ; +#1211 = CARTESIAN_POINT ( 'NONE', ( -43.54841234348915435, 10.66839269963314685, 13.83319670399202650 ) ) ; +#1212 = ORIENTED_EDGE ( 'NONE', *, *, #2717, .T. ) ; +#1213 = VERTEX_POINT ( 'NONE', #1772 ) ; +#1214 = DIRECTION ( 'NONE', ( -1.000000000000000000, 0.000000000000000000, 0.000000000000000000 ) ) ; +#1215 = CARTESIAN_POINT ( 'NONE', ( 0.000000000000000000, 65.00000000000000000, 20.50000000000000000 ) ) ; +#1216 = CARTESIAN_POINT ( 'NONE', ( -34.67603907761178306, 33.65127714537908332, -7.779315588964926143 ) ) ; +#1217 = ORIENTED_EDGE ( 'NONE', *, *, #138, .F. ) ; +#1218 = EDGE_CURVE ( 'NONE', #2543, #2761, #1350, .T. ) ; +#1219 = DIRECTION ( 'NONE', ( 0.000000000000000000, 0.000000000000000000, -1.000000000000000000 ) ) ; +#1220 = CARTESIAN_POINT ( 'NONE', ( -30.49879357623249021, 33.60651729438624358, -14.58866304604573827 ) ) ; +#1221 = EDGE_CURVE ( 'NONE', #484, #1656, #2020, .T. ) ; +#1222 = CARTESIAN_POINT ( 'NONE', ( 40.17685806913076618, 20.46108306200142124, 7.477634347492172040 ) ) ; +#1223 = CARTESIAN_POINT ( 'NONE', ( -42.70553305319337056, 13.11653834139425712, -15.19717562793444898 ) ) ; +#1224 = CARTESIAN_POINT ( 'NONE', ( -40.25632870800318130, 15.70283663275019670, 7.726926205485937338 ) ) ; +#1225 = VERTEX_POINT ( 'NONE', #1146 ) ; +#1226 = EDGE_LOOP ( 'NONE', ( #1422, #2710, #235, #1926, #1196 ) ) ; +#1227 = DIRECTION ( 'NONE', ( -1.000000000000000000, -0.000000000000000000, -0.000000000000000000 ) ) ; +#1228 = DIRECTION ( 'NONE', ( 0.000000000000000000, 0.000000000000000000, -1.000000000000000000 ) ) ; +#1229 = LINE ( 'NONE', #1797, #1605 ) ; +#1230 = EDGE_LOOP ( 'NONE', ( #1084, #1686, #883, #511, #2705, #191, #2392, #2722, #2266 ) ) ; +#1231 = CARTESIAN_POINT ( 'NONE', ( -42.88477153647212958, 6.680457565318799418, -11.37435257436250780 ) ) ; +#1232 = CARTESIAN_POINT ( 'NONE', ( -32.11570477478471730, 34.86676235285923298, -16.56647899812988811 ) ) ; +#1233 = ADVANCED_FACE ( 'NONE', ( #948 ), #1279, .T. ) ; +#1234 = CARTESIAN_POINT ( 'NONE', ( 44.07774513821172491, 9.130943874689785744, 9.248325972625204727 ) ) ; +#1235 = CARTESIAN_POINT ( 'NONE', ( 31.94552866371300226, 44.36900610829343350, 12.07457116983854739 ) ) ; +#1236 = CARTESIAN_POINT ( 'NONE', ( -42.34167783728248224, 14.17335700014439759, -15.72498084163509091 ) ) ; +#1237 = EDGE_LOOP ( 'NONE', ( #2295, #1826, #1951, #2332, #1134, #12 ) ) ; +#1238 = DIRECTION ( 'NONE', ( -0.000000000000000000, 1.000000000000000000, -0.000000000000000000 ) ) ; +#1239 = ORIENTED_EDGE ( 'NONE', *, *, #1644, .F. ) ; +#1240 = DIRECTION ( 'NONE', ( 0.000000000000000000, -0.000000000000000000, -1.000000000000000000 ) ) ; +#1241 = DIRECTION ( 'NONE', ( -0.000000000000000000, 1.000000000000000000, -0.000000000000000000 ) ) ; +#1242 = DIRECTION ( 'NONE', ( -0.000000000000000000, -0.000000000000000000, -1.000000000000000000 ) ) ; +#1243 = ORIENTED_EDGE ( 'NONE', *, *, #1052, .T. ) ; +#1244 = CARTESIAN_POINT ( 'NONE', ( -43.59320368275608359, 10.53829610896616664, -13.70289350183125343 ) ) ; +#1245 = CARTESIAN_POINT ( 'NONE', ( -42.99779078280186440, 6.292508293127065500, 12.67998707075209630 ) ) ; +#1246 = VECTOR ( 'NONE', #436, 1000.000000000000000 ) ; +#1247 = CARTESIAN_POINT ( 'NONE', ( 42.98233690606029000, 6.345555189378156768, 12.05046592392583804 ) ) ; +#1248 = CARTESIAN_POINT ( 'NONE', ( 42.27964029246205513, 14.35354525096334477, 9.216698446040350490 ) ) ; +#1249 = CARTESIAN_POINT ( 'NONE', ( -42.80493708065813507, 6.954496899632762741, -13.95618995914495208 ) ) ; +#1250 = VERTEX_POINT ( 'NONE', #1896 ) ; +#1251 = EDGE_CURVE ( 'NONE', #2664, #2746, #1391, .T. ) ; +#1252 = CARTESIAN_POINT ( 'NONE', ( 0.000000000000000000, 65.00000000000000000, 20.50000000000000000 ) ) ; +#1253 = ORIENTED_EDGE ( 'NONE', *, *, #2532, .T. ) ; +#1254 = CARTESIAN_POINT ( 'NONE', ( 0.000000000000000000, 45.00000000000000000, -0.4999999999999995559 ) ) ; +#1255 = CARTESIAN_POINT ( 'NONE', ( 44.94552866371285660, 6.610463800732987671, 12.50000000000000000 ) ) ; +#1256 = AXIS2_PLACEMENT_3D ( 'NONE', #2734, #2335, #1712 ) ; +#1257 = CARTESIAN_POINT ( 'NONE', ( -1.750000000000000888, 24.99999999999999645, 9.500000000000001776 ) ) ; +#1258 = ORIENTED_EDGE ( 'NONE', *, *, #2057, .T. ) ; +#1259 = CARTESIAN_POINT ( 'NONE', ( -35.73620674676906361, 31.21858356992176908, -7.270798027060732416 ) ) ; +#1260 = DIRECTION ( 'NONE', ( -0.000000000000000000, -1.000000000000000000, -0.000000000000000000 ) ) ; +#1261 = DIRECTION ( 'NONE', ( 0.000000000000000000, 0.000000000000000000, 1.000000000000000000 ) ) ; +#1262 = CARTESIAN_POINT ( 'NONE', ( 34.73009560828655395, 34.67215538704933664, 7.694174863916341423 ) ) ; +#1263 = CARTESIAN_POINT ( 'NONE', ( -42.86042546973750689, 6.764027746302711641, -13.73640018207928115 ) ) ; +#1264 = VERTEX_POINT ( 'NONE', #2329 ) ; +#1265 = CARTESIAN_POINT ( 'NONE', ( 34.27817459305202874, 36.22341709370546425, 18.00000000000000000 ) ) ; +#1266 = ORIENTED_EDGE ( 'NONE', *, *, #862, .T. ) ; +#1267 = EDGE_CURVE ( 'NONE', #2325, #1700, #1884, .T. ) ; +#1268 = CARTESIAN_POINT ( 'NONE', ( -30.14789704064898501, 32.86079898432327440, -11.48062837958230809 ) ) ; +#1269 = CYLINDRICAL_SURFACE ( 'NONE', #1007, 1.750000000000000888 ) ; +#1270 = EDGE_CURVE ( 'NONE', #2620, #2068, #538, .T. ) ; +#1271 = VERTEX_POINT ( 'NONE', #407 ) ; +#1272 = CARTESIAN_POINT ( 'NONE', ( -40.07226420255292965, 20.76487628785908512, -6.184082296412528379 ) ) ; +#1273 = CARTESIAN_POINT ( 'NONE', ( -43.20911154149919042, 11.65389298324523715, 11.25261746733953316 ) ) ; +#1274 = CIRCLE ( 'NONE', #1588, 2.750000000000002665 ) ; +#1275 = DIRECTION ( 'NONE', ( -1.000000000000000000, 0.000000000000000000, 0.000000000000000000 ) ) ; +#1276 = CARTESIAN_POINT ( 'NONE', ( 38.93961336429532594, 20.22258681569371674, 7.143150278456521285 ) ) ; +#1277 = CARTESIAN_POINT ( 'NONE', ( 43.00000000000000000, 6.284924945759599701, 12.50000000000000000 ) ) ; +#1278 = ORIENTED_EDGE ( 'NONE', *, *, #1957, .T. ) ; +#1279 =( BOUNDED_SURFACE ( ) B_SPLINE_SURFACE ( 3, 2, ( + ( #2626, #1367, #2195 ), + ( #1158, #1560, #1133 ), + ( #1986, #2221, #2011 ), + ( #936, #2641, #704 ), + ( #274, #65, #93 ), + ( #2417, #2000, #1353 ), + ( #79, #1785, #2586 ), + ( #1613, #281, #337 ), + ( #266, #1111, #696 ), + ( #1961, #460, #2468 ), + ( #2258, #253, #292 ), + ( #1553, #971, #2408 ), + ( #1404, #2172, #1822 ), + ( #2675, #39, #57 ), + ( #754, #2201, #1125 ), + ( #1330, #1183, #1543 ), + ( #900, #1991, #1532 ), + ( #1345, #2424, #546 ), + ( #1195, #1749, #2604 ), + ( #70, #683, #2049 ), + ( #1762, #503, #1138 ), + ( #128, #2396, #928 ), + ( #489, #1778, #1734 ), + ( #667, #1977, #2632 ), + ( #711, #1314, #2382 ), + ( #2187, #473, #2037 ), + ( #1569, #913, #1359 ), + ( #2618, #2214, #115 ), + ( #2576, #1477, #1305 ), + ( #1319, #1739, #642 ), + ( #435, #656, #1071 ), + ( #464, #203, #2563 ), + ( #2387, #2595, #612 ), + ( #1937, #673, #242 ), + ( #1908, #843, #1539 ), + ( #1708, #214, #1521 ), + ( #2756, #2342, #2178 ), + ( #258, #2121, #2133 ) ), + .UNSPECIFIED., .F., .F., .T. ) + B_SPLINE_SURFACE_WITH_KNOTS ( ( 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4 ), + ( 3, 3 ), + ( 3.141592653589793116, 3.337942194439155408, 3.534291735288517255, 3.730641276137879103, 3.926990816987241395, 4.319689898685965090, 4.712388980384689674, 5.105088062083414258, 5.301437602932775661, 5.497787143782137953, 5.694136684631500245, 5.792311455056180947, 5.890486225480861648, 5.988660995905542350, 6.086835766330223940, 6.135923151542565179, 6.185010536754905530, 6.234097921967245881, 6.283185307179586232 ), + ( 0.000000000000000000, 1.000000000000000000 ), + .UNSPECIFIED. ) + GEOMETRIC_REPRESENTATION_ITEM ( ) RATIONAL_B_SPLINE_SURFACE ( ( + ( 1.000000000000000000, 0.9862881586313551052, 1.000000000000000000), + ( 1.000000000000000000, 0.9862886620239492697, 1.000000000000000000), + ( 1.000000000000000000, 0.9847468226703547378, 1.000000000000000000), + ( 1.000000000000000000, 0.9785975666658145444, 1.000000000000000000), + ( 1.000000000000000000, 0.9739896480940227752, 1.000000000000000000), + ( 1.000000000000000000, 0.9617554693256528120, 1.000000000000000000), + ( 1.000000000000000000, 0.9541292101921223789, 1.000000000000000000), + ( 1.000000000000000000, 0.9359386994017488970, 1.000000000000000000), + ( 1.000000000000000000, 0.9253744439780019482, 1.000000000000000000), + ( 1.000000000000000000, 0.8894434017618667587, 1.000000000000000000), + ( 1.000000000000000000, 0.8598216432909758788, 1.000000000000000000), + ( 1.000000000000000000, 0.7905347754436035101, 1.000000000000000000), + ( 1.000000000000000000, 0.7508658766753982805, 1.000000000000000000), + ( 1.000000000000000000, 0.6633476856976968650, 1.000000000000000000), + ( 1.000000000000000000, 0.6154803776383602765, 1.000000000000000000), + ( 1.000000000000000000, 0.5395685366564493268, 1.000000000000000000), + ( 1.000000000000000000, 0.5135864445223659036, 1.000000000000000000), + ( 1.000000000000000000, 0.4607773684082399623, 1.000000000000000000), + ( 1.000000000000000000, 0.4339434541725344374, 1.000000000000000000), + ( 1.000000000000000000, 0.3801944580786827954, 1.000000000000000000), + ( 1.000000000000000000, 0.3532598395135532754, 1.000000000000000000), + ( 1.000000000000000000, 0.3138283910423629308, 1.000000000000000000), + ( 1.000000000000000000, 0.3008525186323626199, 1.000000000000000000), + ( 1.000000000000000000, 0.2755469356018441784, 1.000000000000000000), + ( 1.000000000000000000, 0.2632145179657154888, 1.000000000000000000), + ( 1.000000000000000000, 0.2396680134329088885, 1.000000000000000000), + ( 1.000000000000000000, 0.2284507283938273792, 1.000000000000000000), + ( 1.000000000000000000, 0.2078644858772128179, 1.000000000000000000), + ( 1.000000000000000000, 0.1984960600879293602, 1.000000000000000000), + ( 1.000000000000000000, 0.1866179000438641378, 1.000000000000000000), + ( 1.000000000000000000, 0.1830235777788575269, 1.000000000000000000), + ( 1.000000000000000000, 0.1767131491669811094, 1.000000000000000000), + ( 1.000000000000000000, 0.1739978385178775067, 1.000000000000000000), + ( 1.000000000000000000, 0.1695842193436807033, 1.000000000000000000), + ( 1.000000000000000000, 0.1678868551765243244, 1.000000000000000000), + ( 1.000000000000000000, 0.1656105720155000849, 1.000000000000000000), + ( 1.000000000000000000, 0.1650312009201779229, 1.000000000000000000), + ( 1.000000000000000000, 0.1650323245415012685, 1.000000000000000000) ) ) + REPRESENTATION_ITEM ( '' ) SURFACE ( ) ); +#1280 = CARTESIAN_POINT ( 'NONE', ( -43.00000000005575629, 12.26125813590357261, 12.69414988364419727 ) ) ; +#1281 = VERTEX_POINT ( 'NONE', #451 ) ; +#1282 = DIRECTION ( 'NONE', ( -0.000000000000000000, -1.000000000000000000, -0.000000000000000000 ) ) ; +#1283 = CARTESIAN_POINT ( 'NONE', ( 0.000000000000000000, 24.99999999999999645, 9.500000000000001776 ) ) ; +#1284 = CARTESIAN_POINT ( 'NONE', ( -33.95686232909699953, 34.85544970394357733, -17.73809573338819590 ) ) ; +#1285 = ORIENTED_EDGE ( 'NONE', *, *, #1218, .T. ) ; +#1286 = CARTESIAN_POINT ( 'NONE', ( -38.47676016858825676, 25.39902294696209140, -5.978028707135908171 ) ) ; +#1287 = CARTESIAN_POINT ( 'NONE', ( -44.85957031200508993, 6.860130113013363840, 13.55895294178182198 ) ) ; +#1288 = DIRECTION ( 'NONE', ( -1.000000000000000000, 0.000000000000000000, 0.000000000000000000 ) ) ; +#1289 = CARTESIAN_POINT ( 'NONE', ( 1.750000000000000888, 65.00000000000000000, 20.50000000000000000 ) ) ; +#1290 = AXIS2_PLACEMENT_3D ( 'NONE', #1621, #2009, #2035 ) ; +#1291 = PLANE ( 'NONE', #2493 ) ; +#1292 = LINE ( 'NONE', #1955, #2552 ) ; +#1293 = VECTOR ( 'NONE', #1050, 1000.000000000000000 ) ; +#1294 = VECTOR ( 'NONE', #1558, 1000.000000000000114 ) ; +#1295 = CARTESIAN_POINT ( 'NONE', ( -44.94552866371285660, 6.610463800732930828, 12.50000000000001243 ) ) ; +#1296 = ORIENTED_EDGE ( 'NONE', *, *, #2299, .T. ) ; +#1297 = DIRECTION ( 'NONE', ( -0.000000000000000000, 1.000000000000000000, -0.000000000000000000 ) ) ; +#1298 = CARTESIAN_POINT ( 'NONE', ( -32.68692989464853582, 33.58835931915862716, -15.17089609013444473 ) ) ; +#1299 = ORIENTED_EDGE ( 'NONE', *, *, #358, .F. ) ; +#1300 = AXIS2_PLACEMENT_3D ( 'NONE', #1510, #677, #2390 ) ; +#1301 = CARTESIAN_POINT ( 'NONE', ( -44.55199895893480289, 7.753472108974767352, -10.26864092019867236 ) ) ; +#1302 = FACE_OUTER_BOUND ( 'NONE', #1911, .T. ) ; +#1303 = ORIENTED_EDGE ( 'NONE', *, *, #823, .T. ) ; +#1304 = EDGE_CURVE ( 'NONE', #175, #2480, #2743, .T. ) ; +#1305 = CARTESIAN_POINT ( 'NONE', ( 42.85920530509994819, 6.768216077038371914, 13.74952544841718982 ) ) ; +#1306 = CARTESIAN_POINT ( 'NONE', ( 0.000000000000000000, 65.00000000000000000, 20.50000000000000000 ) ) ; +#1307 = DIRECTION ( 'NONE', ( 0.000000000000000000, 0.000000000000000000, -1.000000000000000000 ) ) ; +#1308 = FACE_OUTER_BOUND ( 'NONE', #2652, .T. ) ; +#1309 = ADVANCED_FACE ( 'NONE', ( #2150 ), #1099, .T. ) ; +#1310 = CARTESIAN_POINT ( 'NONE', ( 37.50000000000000000, 25.16419609954003533, 17.99999999999999645 ) ) ; +#1311 = CARTESIAN_POINT ( 'NONE', ( -35.09520810662709067, 34.18176677009029873, -18.21823116254233454 ) ) ; +#1312 = DIRECTION ( 'NONE', ( -0.3348729792147802642, -0.9422632794457275196, 0.000000000000000000 ) ) ; +#1313 = CARTESIAN_POINT ( 'NONE', ( -33.45976740520268322, 34.96997971622484158, -17.47753426087511386 ) ) ; +#1314 = CARTESIAN_POINT ( 'NONE', ( 43.67796458834889961, 10.29210778281630034, 12.19103034307616262 ) ) ; +#1315 = VERTEX_POINT ( 'NONE', #2533 ) ; +#1316 = CARTESIAN_POINT ( 'NONE', ( -36.36104731350425112, 31.54411781998823372, -6.320033347511607502 ) ) ; +#1317 = CARTESIAN_POINT ( 'NONE', ( -40.85494385521263183, 13.64803341803676062, 16.87309194081379005 ) ) ; +#1318 = ORIENTED_EDGE ( 'NONE', *, *, #60, .F. ) ; +#1319 = CARTESIAN_POINT ( 'NONE', ( 44.84138201281256642, 6.912958087210610003, 13.66377469286522839 ) ) ; +#1320 = ADVANCED_FACE ( 'NONE', ( #627, #1507 ), #888, .F. ) ; +#1321 = DIRECTION ( 'NONE', ( -0.3663045011995059719, 0.9304950362043751255, 1.291321266866894766E-15 ) ) ; +#1322 = CARTESIAN_POINT ( 'NONE', ( -35.86915977639390718, 32.97280677233769808, -6.532393833667063276 ) ) ; +#1323 = CIRCLE ( 'NONE', #2217, 0.9999999999999987788 ) ; +#1324 = CARTESIAN_POINT ( 'NONE', ( -31.99999999999999289, 44.04346725332046475, 15.72182540694797659 ) ) ; +#1325 = EDGE_CURVE ( 'NONE', #1933, #988, #570, .T. ) ; +#1326 = EDGE_LOOP ( 'NONE', ( #208, #2136 ) ) ; +#1327 = CARTESIAN_POINT ( 'NONE', ( 37.50000000000000000, 5.000000000000004441, 15.25000000000000355 ) ) ; +#1328 = CARTESIAN_POINT ( 'NONE', ( -33.27732909717479259, 40.50078741505534197, 8.535066353113485604 ) ) ; +#1329 = DIRECTION ( 'NONE', ( -1.000000000000000000, 0.000000000000000000, 0.000000000000000000 ) ) ; +#1330 = CARTESIAN_POINT ( 'NONE', ( 41.32601150491486663, 17.12336316791884272, 18.34241424289190903 ) ) ; +#1331 = CARTESIAN_POINT ( 'NONE', ( -34.29682942451555050, 33.88018324366031919, -16.97263664770851932 ) ) ; +#1332 = CARTESIAN_POINT ( 'NONE', ( -42.43541227556343642, 8.222925807528207898, 14.93394762038457912 ) ) ; +#1333 = ORIENTED_EDGE ( 'NONE', *, *, #2671, .T. ) ; +#1334 = CARTESIAN_POINT ( 'NONE', ( -31.62984376346780024, 36.62285101022548872, -13.44281979267885951 ) ) ; +#1335 = CARTESIAN_POINT ( 'NONE', ( -31.67128112610105717, 36.36471689561647480, -13.09457092943240930 ) ) ; +#1336 = DIRECTION ( 'NONE', ( -1.000000000000000000, 0.000000000000000000, 0.000000000000000000 ) ) ; +#1337 = CYLINDRICAL_SURFACE ( 'NONE', #940, 5.499999999999994671 ) ; +#1338 = CARTESIAN_POINT ( 'NONE', ( -45.50000000000000000, 0.000000000000000000, -20.50000000000000000 ) ) ; +#1339 = EDGE_LOOP ( 'NONE', ( #1148, #2575 ) ) ; +#1340 = ADVANCED_FACE ( 'NONE', ( #1085 ), #793, .T. ) ; +#1341 = FACE_OUTER_BOUND ( 'NONE', #2138, .T. ) ; +#1342 = AXIS2_PLACEMENT_3D ( 'NONE', #1306, #1709, #1336 ) ; +#1343 = CARTESIAN_POINT ( 'NONE', ( -32.65564714380936806, 42.30646467183075288, 9.856350478464486642 ) ) ; +#1344 = CARTESIAN_POINT ( 'NONE', ( 45.50000000000002132, 5.000000000000000000, 20.50000000000000000 ) ) ; +#1345 = CARTESIAN_POINT ( 'NONE', ( 42.41046231078216522, 13.97357227301046834, 17.66819956641655054 ) ) ; +#1346 = CARTESIAN_POINT ( 'NONE', ( -33.06795571089505614, 33.85032747006412279, -15.76553517146966499 ) ) ; +#1347 = CARTESIAN_POINT ( 'NONE', ( -42.27964029246207645, 14.35354525096323464, 15.78330155395758894 ) ) ; +#1348 = CARTESIAN_POINT ( 'NONE', ( -32.05179640478741021, 32.45198919690344042, -11.73948780598515818 ) ) ; +#1349 = CARTESIAN_POINT ( 'NONE', ( -32.97952337561983427, 35.01307201903078692, -7.803581502939895387 ) ) ; +#1350 = CIRCLE ( 'NONE', #1701, 2.750000000000002665 ) ; +#1351 = DIRECTION ( 'NONE', ( -0.9304950362043749035, -0.3663045011995061939, 0.000000000000000000 ) ) ; +#1352 = DIRECTION ( 'NONE', ( 0.000000000000000000, -1.000000000000000000, 0.000000000000000000 ) ) ; +#1353 = CARTESIAN_POINT ( 'NONE', ( 32.55641871737685022, 42.13350728233955067, 14.93733163443754108 ) ) ; +#1354 =( BOUNDED_CURVE ( ) B_SPLINE_CURVE ( 3, ( #386, #2515, #2432, #593 ), + .UNSPECIFIED., .F., .F. ) + B_SPLINE_CURVE_WITH_KNOTS ( ( 4, 4 ), + ( 3.141592653589793116, 6.283185307179586232 ), + .UNSPECIFIED. ) + CURVE ( ) GEOMETRIC_REPRESENTATION_ITEM ( ) RATIONAL_B_SPLINE_CURVE ( ( 1.000000000000000000, 0.3333333333333333703, 0.3333333333333333703, 1.000000000000000000 ) ) + REPRESENTATION_ITEM ( '' ) ); +#1355 = EDGE_LOOP ( 'NONE', ( #1472, #1066 ) ) ; +#1356 = CARTESIAN_POINT ( 'NONE', ( -31.23772755445721216, 34.40362048588406907, -15.69215289719728545 ) ) ; +#1357 = CARTESIAN_POINT ( 'NONE', ( -39.29637667370386112, 23.01844414047110021, 6.000000000000002665 ) ) ; +#1358 = ADVANCED_FACE ( 'NONE', ( #1620, #1845 ), #1192, .F. ) ; +#1359 = CARTESIAN_POINT ( 'NONE', ( 42.71092435547765831, 7.277204487012764567, 14.26880262041515124 ) ) ; +#1360 = CARTESIAN_POINT ( 'NONE', ( -32.68724500943380207, 33.58878436520782884, -15.17162741788891012 ) ) ; +#1361 = CARTESIAN_POINT ( 'NONE', ( -43.29723134156521525, 11.39794873718619073, 13.99145351984430974 ) ) ; +#1362 = MANIFOLD_SOLID_BREP ( '̨گ5', #2686 ) ; +#1363 = CARTESIAN_POINT ( 'NONE', ( -35.89971384576185898, 32.88406237842245616, -17.79979218800362872 ) ) ; +#1364 = CARTESIAN_POINT ( 'NONE', ( -30.49767916172051940, 33.60471447115438082, -10.41357431976148007 ) ) ; +#1365 = LINE ( 'NONE', #2008, #312 ) ; +#1366 = DIRECTION ( 'NONE', ( -0.000000000000000000, -0.000000000000000000, -1.000000000000000000 ) ) ; +#1367 = CARTESIAN_POINT ( 'NONE', ( 32.00000000000000000, 44.21079393477482000, 12.49999999999999822 ) ) ; +#1368 = AXIS2_PLACEMENT_3D ( 'NONE', #2363, #236, #1039 ) ; +#1369 = VERTEX_POINT ( 'NONE', #2063 ) ; +#1370 = VECTOR ( 'NONE', #305, 1000.000000000000000 ) ; +#1371 = DIRECTION ( 'NONE', ( 0.000000000000000000, 0.000000000000000000, -1.000000000000000000 ) ) ; +#1372 = FACE_OUTER_BOUND ( 'NONE', #1443, .T. ) ; +#1373 = CARTESIAN_POINT ( 'NONE', ( -42.57530924774837899, 13.49477380811439708, 15.37803231392795844 ) ) ; +#1374 = ADVANCED_FACE ( 'NONE', ( #1636 ), #768, .T. ) ; +#1375 = CARTESIAN_POINT ( 'NONE', ( -31.98810384804529861, 37.35610748556290162, -12.77690211619579941 ) ) ; +#1376 = CARTESIAN_POINT ( 'NONE', ( -30.24108867664220668, 33.09510371101608683, -11.01637359942223782 ) ) ; +#1377 = DIRECTION ( 'NONE', ( 0.000000000000000000, 0.000000000000000000, -1.000000000000000000 ) ) ; +#1378 = FACE_OUTER_BOUND ( 'NONE', #2083, .T. ) ; +#1379 = ORIENTED_EDGE ( 'NONE', *, *, #279, .T. ) ; +#1380 = VERTEX_POINT ( 'NONE', #601 ) ; +#1381 = AXIS2_PLACEMENT_3D ( 'NONE', #607, #1228, #2556 ) ; +#1382 = CARTESIAN_POINT ( 'NONE', ( -44.84138201281255220, 6.912958087210613556, 11.33622530713477339 ) ) ; +#1383 = AXIS2_PLACEMENT_3D ( 'NONE', #2736, #1673, #1469 ) ; +#1384 = CARTESIAN_POINT ( 'NONE', ( -32.00003383277233837, 32.30167251210357193, -12.61409455811673119 ) ) ; +#1385 = AXIS2_PLACEMENT_3D ( 'NONE', #1968, #2415, #1939 ) ; +#1386 = CYLINDRICAL_SURFACE ( 'NONE', #1601, 32.50000000000000000 ) ; +#1387 = CARTESIAN_POINT ( 'NONE', ( -36.91745922585884188, 29.92801760975215331, -18.04275952704307073 ) ) ; +#1388 = CARTESIAN_POINT ( 'NONE', ( -30.85095568375334452, 34.05872916592048938, -9.816984474666185179 ) ) ; +#1389 = CARTESIAN_POINT ( 'NONE', ( -35.36679846747600209, 33.89153525923114074, -18.31250398666472989 ) ) ; +#1390 = EDGE_CURVE ( 'NONE', #594, #1060, #1030, .T. ) ; +#1391 = CIRCLE ( 'NONE', #2378, 1.000000000000000888 ) ; +#1392 = VECTOR ( 'NONE', #733, 1000.000000000000000 ) ; +#1393 = DIRECTION ( 'NONE', ( 0.9422632794457277416, -0.3348729792147797646, 0.000000000000000000 ) ) ; +#1394 = ADVANCED_FACE ( 'NONE', ( #1998 ), #1144, .T. ) ; +#1395 = ORIENTED_EDGE ( 'NONE', *, *, #1595, .T. ) ; +#1396 =( LENGTH_UNIT ( ) NAMED_UNIT ( * ) SI_UNIT ( .MILLI., .METRE. ) ); +#1397 = CARTESIAN_POINT ( 'NONE', ( -42.43541227556363538, 8.222925807528154607, 10.06605237961579391 ) ) ; +#1398 = CARTESIAN_POINT ( 'NONE', ( -34.64959837723355918, 36.51502682517340759, 3.381018314199685015 ) ) ; +#1399 = CARTESIAN_POINT ( 'NONE', ( -32.85740444909854574, 41.72045992200442299, 15.48591936326438301 ) ) ; +#1400 = CARTESIAN_POINT ( 'NONE', ( -43.00000000000000000, 12.26125813606935644, -12.49999999999993783 ) ) ; +#1401 = CARTESIAN_POINT ( 'NONE', ( -35.36682429458187471, 33.89153810191015026, -6.687484199460998369 ) ) ; +#1402 = CARTESIAN_POINT ( 'NONE', ( 45.50000000000002132, 5.000000000000000000, 0.000000000000000000 ) ) ; +#1403 = CARTESIAN_POINT ( 'NONE', ( -34.22735686600162097, 34.77002330469203173, -7.130526569817990712 ) ) ; +#1404 = CARTESIAN_POINT ( 'NONE', ( 37.59468065372185919, 27.96102576855563626, 19.00000000000000000 ) ) ; +#1405 = ORIENTED_EDGE ( 'NONE', *, *, #1730, .F. ) ; +#1406 = EDGE_CURVE ( 'NONE', #1250, #699, #130, .T. ) ; +#1407 = CARTESIAN_POINT ( 'NONE', ( -43.34254294013565101, 11.26634105166415267, 8.204626120997501104 ) ) ; +#1408 = ORIENTED_EDGE ( 'NONE', *, *, #581, .F. ) ; +#1409 = LINE ( 'NONE', #563, #1392 ) ; +#1410 = DIRECTION ( 'NONE', ( -1.000000000000000000, 0.000000000000000000, 0.000000000000000000 ) ) ; +#1411 = ORIENTED_EDGE ( 'NONE', *, *, #1595, .F. ) ; +#1412 = CYLINDRICAL_SURFACE ( 'NONE', #276, 5.499999999999996447 ) ; +#1413 = CARTESIAN_POINT ( 'NONE', ( -35.76995884981808160, 33.24484818809215625, -7.244799766026903676 ) ) ; +#1414 = CARTESIAN_POINT ( 'NONE', ( -34.95333993191496091, 34.33593556534344771, -18.16890658897331789 ) ) ; +#1415 = CARTESIAN_POINT ( 'NONE', ( 42.43541227556343642, 8.222925807528882913, 10.06605237961542265 ) ) ; +#1416 = CARTESIAN_POINT ( 'NONE', ( -35.31999555688394565, 32.64726791736439537, -17.54951290997401614 ) ) ; +#1417 = CARTESIAN_POINT ( 'NONE', ( -42.92657441282920416, 6.536965231182059632, -13.40284925035812158 ) ) ; +#1418 = ORIENTED_EDGE ( 'NONE', *, *, #842, .F. ) ; +#1419 =( NAMED_UNIT ( * ) PLANE_ANGLE_UNIT ( ) SI_UNIT ( $, .RADIAN. ) ); +#1420 = CARTESIAN_POINT ( 'NONE', ( -44.53214698414783612, 7.811132234350331771, 10.20907795478963287 ) ) ; +#1421 = ORIENTED_EDGE ( 'NONE', *, *, #2425, .T. ) ; +#1422 = ORIENTED_EDGE ( 'NONE', *, *, #243, .F. ) ; +#1423 = CARTESIAN_POINT ( 'NONE', ( -32.06623647702694768, 32.49411535304783172, -13.37737081519266802 ) ) ; +#1424 = EDGE_CURVE ( 'NONE', #2480, #1060, #259, .T. ) ; +#1425 = FACE_OUTER_BOUND ( 'NONE', #317, .T. ) ; +#1426 = AXIS2_PLACEMENT_3D ( 'NONE', #2209, #874, #260 ) ; +#1427 = EDGE_CURVE ( 'NONE', #2068, #1933, #688, .T. ) ; +#1428 = COLOUR_RGB ( '',0.7921568627450980005, 0.8196078431372548767, 0.9333333333333333481 ) ; +#1429 =( BOUNDED_CURVE ( ) B_SPLINE_CURVE ( 3, ( #1255, #2527, #2086, #427 ), + .UNSPECIFIED., .F., .T. ) + B_SPLINE_CURVE_WITH_KNOTS ( ( 4, 4 ), + ( 0.000000000000000000, 3.141592653589793116 ), + .UNSPECIFIED. ) + CURVE ( ) GEOMETRIC_REPRESENTATION_ITEM ( ) RATIONAL_B_SPLINE_CURVE ( ( 1.000000000000000000, 0.3333333333333333703, 0.3333333333333333703, 1.000000000000000000 ) ) + REPRESENTATION_ITEM ( '' ) ); +#1430 = ORIENTED_EDGE ( 'NONE', *, *, #1892, .T. ) ; +#1431 = CARTESIAN_POINT ( 'NONE', ( -43.30319550006319673, 11.38062581941293594, -13.88728319995371230 ) ) ; +#1432 = CARTESIAN_POINT ( 'NONE', ( -31.85365882742952692, 35.73721022458634167, -12.98227696002299503 ) ) ; +#1433 = CARTESIAN_POINT ( 'NONE', ( 44.93248048743244283, 6.648362271203773766, 12.07483222645056919 ) ) ; +#1434 = CARTESIAN_POINT ( 'NONE', ( 41.62144033390043774, 16.26528917268629115, 8.515399109952957346 ) ) ; +#1435 = CARTESIAN_POINT ( 'NONE', ( -37.52642665797561961, 25.07348409198810657, -18.01859109396136205 ) ) ; +#1436 = EDGE_LOOP ( 'NONE', ( #742, #730, #2354, #2336 ) ) ; +#1437 = CARTESIAN_POINT ( 'NONE', ( -42.51245935571760981, 7.958454404286082529, 10.22895474377723701 ) ) ; +#1438 = VERTEX_POINT ( 'NONE', #2388 ) ; +#1439 = ORIENTED_EDGE ( 'NONE', *, *, #1107, .F. ) ; +#1440 = LINE ( 'NONE', #166, #811 ) ; +#1441 = FACE_OUTER_BOUND ( 'NONE', #184, .T. ) ; +#1442 = CARTESIAN_POINT ( 'NONE', ( -37.50000000000000000, 0.000000000000000000, 15.25000000000000355 ) ) ; +#1443 = EDGE_LOOP ( 'NONE', ( #368, #46, #1855, #431 ) ) ; +#1444 = CARTESIAN_POINT ( 'NONE', ( -42.98248968273709636, 6.345030768959085243, -12.04706125634183600 ) ) ; +#1445 = EDGE_CURVE ( 'NONE', #383, #1520, #453, .T. ) ; +#1446 = CARTESIAN_POINT ( 'NONE', ( -31.71510282745170173, 36.15765530396839722, -12.21586280284262394 ) ) ; +#1447 = CARTESIAN_POINT ( 'NONE', ( 44.60389381109550300, 7.602743341986022862, 10.40959690314570452 ) ) ; +#1448 = CARTESIAN_POINT ( 'NONE', ( 37.59468065372130496, 27.96102576855725275, 6.000000000000002665 ) ) ; +#1449 = CARTESIAN_POINT ( 'NONE', ( -42.77379477138979524, 7.061395827093332578, -14.06522692799743446 ) ) ; +#1450 = ORIENTED_EDGE ( 'NONE', *, *, #766, .F. ) ; +#1451 = CARTESIAN_POINT ( 'NONE', ( 0.000000000000000000, 24.99999999999999645, 9.500000000000001776 ) ) ; +#1452 = ORIENTED_EDGE ( 'NONE', *, *, #2717, .F. ) ; +#1453 = CARTESIAN_POINT ( 'NONE', ( -35.86915977639390718, 32.97280677233769808, -18.46760616633223506 ) ) ; +#1454 = CYLINDRICAL_SURFACE ( 'NONE', #1121, 2.750000000000002665 ) ; +#1455 = LINE ( 'NONE', #1022, #1744 ) ; +#1456 = AXIS2_PLACEMENT_3D ( 'NONE', #665, #622, #458 ) ; +#1457 = AXIS2_PLACEMENT_3D ( 'NONE', #1162, #134, #2448 ) ; +#1458 =( BOUNDED_CURVE ( ) B_SPLINE_CURVE ( 3, ( #18, #232, #1324, #861 ), + .UNSPECIFIED., .F., .F. ) + B_SPLINE_CURVE_WITH_KNOTS ( ( 4, 4 ), + ( 1.570796326794896780, 3.141592653589793116 ), + .UNSPECIFIED. ) + CURVE ( ) GEOMETRIC_REPRESENTATION_ITEM ( ) RATIONAL_B_SPLINE_CURVE ( ( 1.000000000000000000, 0.8047378541243650485, 0.8047378541243650485, 1.000000000000000000 ) ) + REPRESENTATION_ITEM ( '' ) ); +#1459 = VERTEX_POINT ( 'NONE', #675 ) ; +#1460 = CARTESIAN_POINT ( 'NONE', ( -44.94552866371259370, 6.610463800733696438, -12.36604921272668456 ) ) ; +#1461 = CARTESIAN_POINT ( 'NONE', ( -43.00000000000000000, 6.284924945760107740, 12.58999354329094089 ) ) ; +#1462 = EDGE_CURVE ( 'NONE', #2211, #1060, #2179, .T. ) ; +#1463 = CARTESIAN_POINT ( 'NONE', ( 44.94291777066050031, 6.618047148100503208, 12.28728800729299842 ) ) ; +#1464 = CARTESIAN_POINT ( 'NONE', ( 40.85494385521174365, 13.64803341803679970, 8.126908059185613098 ) ) ; +#1465 = CARTESIAN_POINT ( 'NONE', ( -43.41833536246619474, 11.04620171434411446, -16.69439683086076798 ) ) ; +#1466 = ORIENTED_EDGE ( 'NONE', *, *, #1519, .T. ) ; +#1467 = CARTESIAN_POINT ( 'NONE', ( -43.00000000000000000, 6.284924945759554404, 12.50000000000001066 ) ) ; +#1468 = ORIENTED_EDGE ( 'NONE', *, *, #23, .T. ) ; +#1469 = DIRECTION ( 'NONE', ( -1.000000000000000000, -8.673617379884035472E-16, 0.000000000000000000 ) ) ; +#1470 = CYLINDRICAL_SURFACE ( 'NONE', #617, 1.750000000000000888 ) ; +#1471 = DIRECTION ( 'NONE', ( 0.000000000000000000, -1.000000000000000000, 0.000000000000000000 ) ) ; +#1472 = ORIENTED_EDGE ( 'NONE', *, *, #2391, .T. ) ; +#1473 = CARTESIAN_POINT ( 'NONE', ( -43.41833536246595315, 11.04620171434483034, -8.305603169138516151 ) ) ; +#1474 = CARTESIAN_POINT ( 'NONE', ( -42.95367559951917968, 6.443937839889390062, 13.21799811442427774 ) ) ; +#1475 = AXIS2_PLACEMENT_3D ( 'NONE', #1674, #401, #2751 ) ; +#1476 = PRESENTATION_LAYER_ASSIGNMENT ( '', '', ( #1028 ) ) ; +#1477 = CARTESIAN_POINT ( 'NONE', ( 43.47300727646540963, 10.88740696220810023, 11.07271280387980994 ) ) ; +#1478 = CARTESIAN_POINT ( 'NONE', ( 32.60311442061276921, 42.45904613731270416, 9.619517159301420151 ) ) ; +#1479 = CARTESIAN_POINT ( 'NONE', ( -42.54375550167716824, 7.851027417805985564, -14.70497549800531978 ) ) ; +#1480 = ORIENTED_EDGE ( 'NONE', *, *, #1462, .F. ) ; +#1481 =( BOUNDED_CURVE ( ) B_SPLINE_CURVE ( 3, ( #2030, #2263, #2750, #1453 ), + .UNSPECIFIED., .F., .T. ) + B_SPLINE_CURVE_WITH_KNOTS ( ( 4, 4 ), + ( 0.000000000000000000, 1.978349873612916143 ), + .UNSPECIFIED. ) + CURVE ( ) GEOMETRIC_REPRESENTATION_ITEM ( ) RATIONAL_B_SPLINE_CURVE ( ( 1.000000000000000000, 0.6995862986750021051, 0.6995862986750021051, 1.000000000000000000 ) ) + REPRESENTATION_ITEM ( '' ) ); +#1482 = EDGE_CURVE ( 'NONE', #40, #1947, #465, .T. ) ; +#1483 = CARTESIAN_POINT ( 'NONE', ( 0.000000000000000000, 24.99999999999999645, 20.50000000000000000 ) ) ; +#1484 = ORIENTED_EDGE ( 'NONE', *, *, #917, .T. ) ; +#1485 = CARTESIAN_POINT ( 'NONE', ( 17.22413793103449464, 5.000000000000000000, -20.50000000000000000 ) ) ; +#1486 = AXIS2_PLACEMENT_3D ( 'NONE', #2579, #1941, #2376 ) ; +#1487 = DIRECTION ( 'NONE', ( -1.000000000000000000, 0.000000000000000000, 0.000000000000000000 ) ) ; +#1488 = ORIENTED_EDGE ( 'NONE', *, *, #1889, .F. ) ; +#1489 = CARTESIAN_POINT ( 'NONE', ( -38.87646853286444326, 20.43933743288632954, -7.155761943118373658 ) ) ; +#1490 = DIRECTION ( 'NONE', ( -0.000000000000000000, -1.000000000000000000, -0.000000000000000000 ) ) ; +#1491 = AXIS2_PLACEMENT_3D ( 'NONE', #1745, #1972, #705 ) ; +#1492 = CARTESIAN_POINT ( 'NONE', ( -37.50000000000000000, 5.000000000000000000, -12.50000000000000000 ) ) ; +#1493 = CARTESIAN_POINT ( 'NONE', ( 32.33154110755113209, 43.24783170891586082, 10.57274774848178112 ) ) ; +#1494 = CARTESIAN_POINT ( 'NONE', ( -42.97198885086697118, 6.381075869361912289, -13.06584860415254923 ) ) ; +#1495 = EDGE_LOOP ( 'NONE', ( #1639, #2118, #148, #623 ) ) ; +#1496 = FACE_OUTER_BOUND ( 'NONE', #2365, .T. ) ; +#1497 = ORIENTED_EDGE ( 'NONE', *, *, #1767, .T. ) ; +#1498 = ADVANCED_FACE ( 'NONE', ( #2208 ), #873, .F. ) ; +#1499 = CARTESIAN_POINT ( 'NONE', ( -1.750000000000000888, 65.00000000000000000, 9.500000000000001776 ) ) ; +#1500 = DIRECTION ( 'NONE', ( -0.000000000000000000, -0.000000000000000000, -1.000000000000000000 ) ) ; +#1501 = CARTESIAN_POINT ( 'NONE', ( -32.18303208580277897, 35.36076419269976867, -14.13461323153536142 ) ) ; +#1502 = ORIENTED_EDGE ( 'NONE', *, *, #1445, .F. ) ; +#1503 = CARTESIAN_POINT ( 'NONE', ( -42.70483288625752749, 7.298114032309239718, -10.71883149225044818 ) ) ; +#1504 = DIRECTION ( 'NONE', ( 0.000000000000000000, 0.000000000000000000, -1.000000000000000000 ) ) ; +#1505 = VECTOR ( 'NONE', #1791, 1000.000000000000000 ) ; +#1506 = EDGE_LOOP ( 'NONE', ( #2259, #1480, #1210, #2503 ) ) ; +#1507 = FACE_BOUND ( 'NONE', #582, .T. ) ; +#1508 = CARTESIAN_POINT ( 'NONE', ( 13.87540813888669788, 5.577367205542728357, -20.50000000000000355 ) ) ; +#1509 = FACE_BOUND ( 'NONE', #1893, .T. ) ; +#1510 = CARTESIAN_POINT ( 'NONE', ( 17.17436489607392147, 9.711316397228637598, -0.5000000000000004441 ) ) ; +#1511 = DIRECTION ( 'NONE', ( -0.3255388549733763126, 0.9455286637128580418, 0.000000000000000000 ) ) ; +#1512 = ORIENTED_EDGE ( 'NONE', *, *, #142, .F. ) ; +#1513 = DIRECTION ( 'NONE', ( -0.9422632794457277416, 0.3348729792147803752, 0.000000000000000000 ) ) ; +#1514 = EDGE_CURVE ( 'NONE', #2559, #2469, #643, .T. ) ; +#1515 = CARTESIAN_POINT ( 'NONE', ( -34.24126366280394507, 33.90236320094390265, -16.93223485108799053 ) ) ; +#1516 = VERTEX_POINT ( 'NONE', #889 ) ; +#1517 = CARTESIAN_POINT ( 'NONE', ( -36.40037353085005378, 31.42989469371310918, -7.042263587034935490 ) ) ; +#1518 = DIRECTION ( 'NONE', ( 0.000000000000000000, -0.000000000000000000, 1.000000000000000000 ) ) ; +#1519 = EDGE_CURVE ( 'NONE', #1823, #30, #2238, .T. ) ; +#1520 = VERTEX_POINT ( 'NONE', #2193 ) ; +#1521 = CARTESIAN_POINT ( 'NONE', ( 42.99779078280187150, 6.292508293126906516, 12.67998707075203413 ) ) ; +#1522 = DIRECTION ( 'NONE', ( -1.000000000000000000, 0.000000000000000000, 0.000000000000000000 ) ) ; +#1523 = TOROIDAL_SURFACE ( 'NONE', #2456, 27.50000000000000000, 5.000000000000000000 ) ; +#1524 = DIRECTION ( 'NONE', ( 1.000000000000000000, 0.000000000000000000, 0.000000000000000000 ) ) ; +#1525 = CARTESIAN_POINT ( 'NONE', ( -43.00000000000000000, 12.26125813606935644, -12.49999999999993783 ) ) ; +#1526 = CIRCLE ( 'NONE', #942, 2.750000000000002665 ) ; +#1527 = VECTOR ( 'NONE', #1117, 1000.000000000000000 ) ; +#1528 = DIRECTION ( 'NONE', ( -1.000000000000000000, 0.000000000000000000, 0.000000000000000000 ) ) ; +#1529 = CARTESIAN_POINT ( 'NONE', ( -35.22101607802353129, 34.05608898746584146, -18.26251427131116145 ) ) ; +#1530 = CARTESIAN_POINT ( 'NONE', ( -32.19256952747925027, 32.87104776304519049, -11.04251005918754203 ) ) ; +#1531 = CARTESIAN_POINT ( 'NONE', ( -30.70022793175422038, 33.88660822880560630, -14.94915297329862547 ) ) ; +#1532 = CARTESIAN_POINT ( 'NONE', ( 40.25632870800274077, 15.70283663275023933, 17.27307379451436020 ) ) ; +#1533 = ORIENTED_EDGE ( 'NONE', *, *, #213, .F. ) ; +#1534 = AXIS2_PLACEMENT_3D ( 'NONE', #891, #205, #2758 ) ; +#1535 = CARTESIAN_POINT ( 'NONE', ( -37.52642665797190347, 25.07348409198746353, -6.981408906038309325 ) ) ; +#1536 = CARTESIAN_POINT ( 'NONE', ( -41.62144033390046616, 16.26528917268619523, 16.48460089004885276 ) ) ; +#1537 = EDGE_LOOP ( 'NONE', ( #1062, #2126 ) ) ; +#1538 = ADVANCED_FACE ( 'NONE', ( #2358 ), #2374, .F. ) ; +#1539 = CARTESIAN_POINT ( 'NONE', ( 42.98895923545501319, 6.322823416230617610, 12.85975734684958560 ) ) ; +#1540 = CARTESIAN_POINT ( 'NONE', ( -25.58861349562033283, 34.92662621701362724, -0.4999999999999995559 ) ) ; +#1541 = ORIENTED_EDGE ( 'NONE', *, *, #2467, .T. ) ; +#1542 = CARTESIAN_POINT ( 'NONE', ( -35.86915977639390718, 32.97280677233769808, -0.5000000000000004441 ) ) ; +#1543 = CARTESIAN_POINT ( 'NONE', ( 39.93733163486151483, 16.79782431294496803, 17.44358128244753203 ) ) ; +#1544 = CARTESIAN_POINT ( 'NONE', ( -32.39959609828572695, 33.25666577701638715, -14.56947775229932240 ) ) ; +#1545 = CARTESIAN_POINT ( 'NONE', ( -40.17685806913015512, 20.46108306200315141, 17.52236565250630562 ) ) ; +#1546 = CARTESIAN_POINT ( 'NONE', ( -32.67722337217189477, 34.98896024521154402, -8.005502686623907849 ) ) ; +#1547 = DIRECTION ( 'NONE', ( -1.000000000000000000, 0.000000000000000000, 0.000000000000000000 ) ) ; +#1548 = EDGE_CURVE ( 'NONE', #2469, #410, #2400, .T. ) ; +#1549 = CARTESIAN_POINT ( 'NONE', ( -43.00000000000000000, 6.284924945759554404, -12.50000000000000000 ) ) ; +#1550 = ORIENTED_EDGE ( 'NONE', *, *, #1012, .F. ) ; +#1551 = DIRECTION ( 'NONE', ( -0.000000000000000000, -1.000000000000000000, -0.000000000000000000 ) ) ; +#1552 = CARTESIAN_POINT ( 'NONE', ( -35.86915977639390718, 32.97280677233769808, -6.532393833667063276 ) ) ; +#1553 = CARTESIAN_POINT ( 'NONE', ( 36.74416741500115080, 30.43134423835383728, 18.83082239818627102 ) ) ; +#1554 = CARTESIAN_POINT ( 'NONE', ( -32.19252059299407165, 32.87090085773285608, -13.95728121050578530 ) ) ; +#1555 = CARTESIAN_POINT ( 'NONE', ( -40.25632870800297525, 15.70283663275114172, 17.27307379451420033 ) ) ; +#1556 = CARTESIAN_POINT ( 'NONE', ( -30.21608528462837029, 33.03158952519265057, -11.12630729510718375 ) ) ; +#1557 = CARTESIAN_POINT ( 'NONE', ( -33.20189256992523497, 33.90985971657129028, -9.059882940539411678 ) ) ; +#1558 = DIRECTION ( 'NONE', ( -0.3255388549733763126, 0.9455286637128580418, 0.000000000000000000 ) ) ; +#1559 = CARTESIAN_POINT ( 'NONE', ( 37.50000000000000000, 0.000000000000000000, -12.50000000000000000 ) ) ; +#1560 = CARTESIAN_POINT ( 'NONE', ( 32.00000000000147793, 44.21079393474678909, 12.89178716040784067 ) ) ; +#1561 = EDGE_CURVE ( 'NONE', #254, #175, #1755, .T. ) ; +#1562 = AXIS2_PLACEMENT_3D ( 'NONE', #17, #1726, #934 ) ; +#1563 = ORIENTED_EDGE ( 'NONE', *, *, #447, .F. ) ; +#1564 = AXIS2_PLACEMENT_3D ( 'NONE', #693, #2184, #2600 ) ; +#1565 = B_SPLINE_CURVE_WITH_KNOTS ( 'NONE', 3, + ( #505, #1554, #491, #1544, #2397, #1360, #2427, #1346, #1779, #697, #684, #1979, #915, #1331, #2204, #58, #474, #1992, #901, #2188, #2633, #1751, #2606, #282 ), + .UNSPECIFIED., .F., .F., + ( 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4 ), + ( 0.000000000000000000, 0.0007532897161176469293, 0.001506579432235293859, 0.002259869148352940896, 0.003013158864470592054, 0.003766448580588242778, 0.004143093438647067056, 0.004519738296705892201, 0.004896383154764717346, 0.005273028012823542492, 0.005649672870882366769, 0.006026317728941191915 ), + .UNSPECIFIED. ) ; +#1566 = CARTESIAN_POINT ( 'NONE', ( -37.50000000000000000, 5.000000000000000000, 12.50000000000000000 ) ) ; +#1567 = CARTESIAN_POINT ( 'NONE', ( -37.59468065372185919, 27.96102576855560784, 6.000000000000002665 ) ) ; +#1568 = CARTESIAN_POINT ( 'NONE', ( -45.50000000000000000, 5.000000000000000000, -20.50000000000000355 ) ) ; +#1569 = CARTESIAN_POINT ( 'NONE', ( 44.60389381109546747, 7.602743341986131220, 14.59040309685441983 ) ) ; +#1570 = CARTESIAN_POINT ( 'NONE', ( -1.750000000000000888, 65.00000000000000000, 4.500000000000000888 ) ) ; +#1571 = CARTESIAN_POINT ( 'NONE', ( -34.45097498342182973, 37.09192911890504263, 17.69783447513438190 ) ) ; +#1572 =( BOUNDED_CURVE ( ) B_SPLINE_CURVE ( 3, ( #836, #794, #2045, #2741 ), + .UNSPECIFIED., .F., .T. ) + B_SPLINE_CURVE_WITH_KNOTS ( ( 4, 4 ), + ( 3.141592653589793116, 4.712388980384689674 ), + .UNSPECIFIED. ) + CURVE ( ) GEOMETRIC_REPRESENTATION_ITEM ( ) RATIONAL_B_SPLINE_CURVE ( ( 1.000000000000000000, 0.8047378541243649375, 0.8047378541243649375, 1.000000000000000000 ) ) + REPRESENTATION_ITEM ( '' ) ); +#1573 = CARTESIAN_POINT ( 'NONE', ( -31.66928218820409668, 36.70098412075729044, -13.44889173107035418 ) ) ; +#1574 = CARTESIAN_POINT ( 'NONE', ( -31.85281068133371818, 35.73916661103654491, -12.02183021318687572 ) ) ; +#1575 = DIRECTION ( 'NONE', ( -0.000000000000000000, -0.000000000000000000, -1.000000000000000000 ) ) ; +#1576 = DIRECTION ( 'NONE', ( 0.000000000000000000, 0.000000000000000000, 1.000000000000000000 ) ) ; +#1577 = DIRECTION ( 'NONE', ( -0.000000000000000000, -0.000000000000000000, -1.000000000000000000 ) ) ; +#1578 = ORIENTED_EDGE ( 'NONE', *, *, #517, .T. ) ; +#1579 = DIRECTION ( 'NONE', ( -0.000000000000000000, -1.000000000000000000, -0.000000000000000000 ) ) ; +#1580 = CARTESIAN_POINT ( 'NONE', ( -32.02716457785286508, 32.38016798610966873, -11.94381954748692465 ) ) ; +#1581 = EDGE_CURVE ( 'NONE', #652, #383, #2611, .T. ) ; +#1582 = CARTESIAN_POINT ( 'NONE', ( -43.65830555055399742, 10.34920752207545291, 12.45125492978656112 ) ) ; +#1583 = CIRCLE ( 'NONE', #2323, 32.50000000000000000 ) ; +#1584 = FACE_OUTER_BOUND ( 'NONE', #792, .T. ) ; +#1585 = CARTESIAN_POINT ( 'NONE', ( -30.28356930380876122, 33.20301396760286394, -10.89557269667217376 ) ) ; +#1586 = DIRECTION ( 'NONE', ( -0.000000000000000000, -1.000000000000000000, -0.000000000000000000 ) ) ; +#1587 = CYLINDRICAL_SURFACE ( 'NONE', #1161, 5.499999999999996447 ) ; +#1588 = AXIS2_PLACEMENT_3D ( 'NONE', #444, #1297, #428 ) ; +#1589 = VERTEX_POINT ( 'NONE', #272 ) ; +#1590 = CARTESIAN_POINT ( 'NONE', ( -33.03257378525533738, 31.99619020741757680, 4.500000000000000888 ) ) ; +#1591 = CARTESIAN_POINT ( 'NONE', ( -45.50000000000000000, 5.000000000000000000, 20.50000000000000000 ) ) ; +#1592 = CARTESIAN_POINT ( 'NONE', ( -32.15342044700649637, 43.76518374714867576, 14.18533669406339648 ) ) ; +#1593 = EDGE_CURVE ( 'NONE', #2155, #1213, #2314, .T. ) ; +#1594 = CARTESIAN_POINT ( 'NONE', ( -32.02649951626669633, 32.37823574882894206, -13.04972978295509556 ) ) ; +#1595 = EDGE_CURVE ( 'NONE', #699, #290, #2165, .T. ) ; +#1596 = CARTESIAN_POINT ( 'NONE', ( -30.62729709082692864, 33.79276614032308146, -10.17409299487224317 ) ) ; +#1597 = DIRECTION ( 'NONE', ( -0.000000000000000000, -0.000000000000000000, -1.000000000000000000 ) ) ; +#1598 = CARTESIAN_POINT ( 'NONE', ( -35.59828801170483104, 33.57256264274568025, -17.69015334906597303 ) ) ; +#1599 = CARTESIAN_POINT ( 'NONE', ( -35.86915977639390718, 32.97280677233769808, -6.532393833667063276 ) ) ; +#1600 = ORIENTED_EDGE ( 'NONE', *, *, #828, .T. ) ; +#1601 = AXIS2_PLACEMENT_3D ( 'NONE', #746, #552, #1410 ) ; +#1602 = CARTESIAN_POINT ( 'NONE', ( -42.27964029246378175, 14.35354525096438749, 9.216698446042197901 ) ) ; +#1603 = CIRCLE ( 'NONE', #710, 30.00000000000000711 ) ; +#1604 = CARTESIAN_POINT ( 'NONE', ( 45.50000000000002132, 0.000000000000000000, 20.50000000000000000 ) ) ; +#1605 = VECTOR ( 'NONE', #1597, 1000.000000000000000 ) ; +#1606 = CARTESIAN_POINT ( 'NONE', ( -32.60311442061345133, 42.45904613731072885, 15.38048284069858163 ) ) ; +#1607 = DIRECTION ( 'NONE', ( 1.000000000000000000, 0.000000000000000000, 0.000000000000000000 ) ) ; +#1608 = CARTESIAN_POINT ( 'NONE', ( -35.49713565893312506, 33.72827515132273390, -7.350494171305977709 ) ) ; +#1609 = CARTESIAN_POINT ( 'NONE', ( -37.50000000000000000, 25.16419609954000691, 17.99999999999999645 ) ) ; +#1610 = EDGE_CURVE ( 'NONE', #2404, #2692, #2596, .T. ) ; +#1611 = AXIS2_PLACEMENT_3D ( 'NONE', #1559, #2612, #1307 ) ; +#1612 = CARTESIAN_POINT ( 'NONE', ( -32.50468978478926374, 34.95322199951620235, -8.135956506852453529 ) ) ; +#1613 = CARTESIAN_POINT ( 'NONE', ( 33.27732909717450127, 40.50078741505620172, 16.46493364688651440 ) ) ; +#1614 = VERTEX_POINT ( 'NONE', #102 ) ; +#1615 = CARTESIAN_POINT ( 'NONE', ( -44.77913493337644724, 7.093754932011393954, 11.02328810641593471 ) ) ; +#1616 = ORIENTED_EDGE ( 'NONE', *, *, #504, .T. ) ; +#1617 = LINE ( 'NONE', #2484, #599 ) ; +#1618 = CARTESIAN_POINT ( 'NONE', ( -33.35637253533404589, 39.38759000239074481, 16.13454712838606753 ) ) ; +#1619 = CARTESIAN_POINT ( 'NONE', ( -44.92483465240199081, 6.670569623932487424, -11.96470875749483653 ) ) ; +#1620 = FACE_OUTER_BOUND ( 'NONE', #133, .T. ) ; +#1621 = CARTESIAN_POINT ( 'NONE', ( 37.50000000000000000, 75.00000000000001421, 12.50000000000000000 ) ) ; +#1622 = CARTESIAN_POINT ( 'NONE', ( 44.85957031200508993, 6.860130113013416242, 11.44104705821817980 ) ) ; +#1623 = EDGE_CURVE ( 'NONE', #1174, #1838, #1065, .T. ) ; +#1624 = CARTESIAN_POINT ( 'NONE', ( -33.91003494827299392, 34.88364372896455023, -7.279559714055275244 ) ) ; +#1625 = CARTESIAN_POINT ( 'NONE', ( -42.88477153647213669, 6.680457565318644875, -13.62564742563747622 ) ) ; +#1626 = VERTEX_POINT ( 'NONE', #1647 ) ; +#1627 = CIRCLE ( 'NONE', #1456, 2.750000000000002665 ) ; +#1628 = CARTESIAN_POINT ( 'NONE', ( -40.14688991242673666, 20.54812567066662510, 6.169177601812665834 ) ) ; +#1629 = ORIENTED_EDGE ( 'NONE', *, *, #2010, .F. ) ; +#1630 = VERTEX_POINT ( 'NONE', #2219 ) ; +#1631 = CARTESIAN_POINT ( 'NONE', ( -34.13761404710683678, 38.00208697824251658, 4.130593500387957029 ) ) ; +#1632 = LINE ( 'NONE', #1805, #2015 ) ; +#1633 = ORIENTED_EDGE ( 'NONE', *, *, #2437, .T. ) ; +#1634 = FACE_OUTER_BOUND ( 'NONE', #2278, .T. ) ; +#1635 = CARTESIAN_POINT ( 'NONE', ( -34.15781794637832292, 34.83372801922882189, -16.87284634255418325 ) ) ; +#1636 = FACE_OUTER_BOUND ( 'NONE', #2419, .T. ) ; +#1637 = CARTESIAN_POINT ( 'NONE', ( -35.56856678408814076, 33.63960453043719667, -6.620387693440302534 ) ) ; +#1638 = CARTESIAN_POINT ( 'NONE', ( -44.87938373321222940, 6.802581966635887767, -13.43458640802096049 ) ) ; +#1639 = ORIENTED_EDGE ( 'NONE', *, *, #2183, .T. ) ; +#1640 = CARTESIAN_POINT ( 'NONE', ( -43.57608948206922861, 10.58800436056085736, 12.02167594496184932 ) ) ; +#1641 = ORIENTED_EDGE ( 'NONE', *, *, #390, .F. ) ; +#1642 = VERTEX_POINT ( 'NONE', #1442 ) ; +#1643 = DIRECTION ( 'NONE', ( 0.000000000000000000, 0.000000000000000000, 1.000000000000000000 ) ) ; +#1644 = EDGE_CURVE ( 'NONE', #2706, #2197, #1650, .T. ) ; +#1645 = CARTESIAN_POINT ( 'NONE', ( -32.55641871737685733, 42.13350728233731957, 14.93733163443755352 ) ) ; +#1646 = AXIS2_PLACEMENT_3D ( 'NONE', #497, #33, #658 ) ; +#1647 = CARTESIAN_POINT ( 'NONE', ( -37.50000000000000000, 25.16419609954000691, -17.99999999999999645 ) ) ; +#1648 = AXIS2_PLACEMENT_3D ( 'NONE', #186, #841, #1706 ) ; +#1649 = ORIENTED_EDGE ( 'NONE', *, *, #686, .T. ) ; +#1650 = CIRCLE ( 'NONE', #179, 2.750000000000002665 ) ; +#1651 = DIRECTION ( 'NONE', ( 0.000000000000000000, -1.000000000000000000, 0.000000000000000000 ) ) ; +#1652 = CARTESIAN_POINT ( 'NONE', ( -34.05321614581736611, 33.96036649347200864, -16.78762747368598696 ) ) ; +#1653 = CARTESIAN_POINT ( 'NONE', ( 42.26572163226845191, 8.805405019716271653, 9.748583515298605562 ) ) ; +#1654 = CARTESIAN_POINT ( 'NONE', ( 32.17590843201798378, 43.43964489217341907, 11.07394587425366161 ) ) ; +#1655 = CARTESIAN_POINT ( 'NONE', ( -44.67819521171887232, 7.386934682066843116, -14.34981364217849276 ) ) ; +#1656 = VERTEX_POINT ( 'NONE', #2310 ) ; +#1657 = AXIS2_PLACEMENT_3D ( 'NONE', #2166, #921, #906 ) ; +#1658 = CARTESIAN_POINT ( 'NONE', ( -43.34545552388709666, 11.25788144268017632, 13.91252425953104677 ) ) ; +#1659 = ORIENTED_EDGE ( 'NONE', *, *, #485, .F. ) ; +#1660 = DIRECTION ( 'NONE', ( 0.000000000000000000, 0.000000000000000000, -1.000000000000000000 ) ) ; +#1661 = CARTESIAN_POINT ( 'NONE', ( -30.07468478458828542, 32.68077376088574937, -12.63306344009754589 ) ) ; +#1662 = DIRECTION ( 'NONE', ( 0.000000000000000000, 0.000000000000000000, 1.000000000000000000 ) ) ; +#1663 = EDGE_CURVE ( 'NONE', #2512, #851, #1455, .T. ) ; +#1664 = EDGE_LOOP ( 'NONE', ( #247, #985, #8, #2320 ) ) ; +#1665 = CARTESIAN_POINT ( 'NONE', ( 4.000000000000001776, 65.00000000000000000, 20.50000000000000000 ) ) ; +#1666 = CARTESIAN_POINT ( 'NONE', ( -37.50000000000000000, 75.00000000000001421, -12.50000000000000000 ) ) ; +#1667 = CARTESIAN_POINT ( 'NONE', ( 43.34545552388527057, 11.25788144268264901, 13.91252425952919936 ) ) ; +#1668 = CARTESIAN_POINT ( 'NONE', ( 32.03545348354649036, 43.92176981164495686, 11.78006058356892360 ) ) ; +#1669 = CARTESIAN_POINT ( 'NONE', ( -43.89767380833999511, 9.653961638331329809, -16.04906812554881768 ) ) ; +#1670 = ORIENTED_EDGE ( 'NONE', *, *, #2247, .F. ) ; +#1671 = CYLINDRICAL_SURFACE ( 'NONE', #775, 4.000000000000000000 ) ; +#1672 = ORIENTED_EDGE ( 'NONE', *, *, #1251, .F. ) ; +#1673 = DIRECTION ( 'NONE', ( -0.000000000000000000, -0.000000000000000000, 1.000000000000000000 ) ) ; +#1674 = CARTESIAN_POINT ( 'NONE', ( 15.50000000000002132, 5.000000000000000000, 79.70475956827036157 ) ) ; +#1675 = DIRECTION ( 'NONE', ( 0.000000000000000000, 0.000000000000000000, -1.000000000000000000 ) ) ; +#1676 = AXIS2_PLACEMENT_3D ( 'NONE', #1904, #838, #183 ) ; +#1677 = VERTEX_POINT ( 'NONE', #521 ) ; +#1678 = CARTESIAN_POINT ( 'NONE', ( -42.11335358391553996, 9.328422783357549264, -9.496942355304755168 ) ) ; +#1679 = CARTESIAN_POINT ( 'NONE', ( 45.50000000000002132, 5.000000000000000000, -0.5000000000000004441 ) ) ; +#1680 = EDGE_CURVE ( 'NONE', #416, #2102, #1783, .T. ) ; +#1681 = CARTESIAN_POINT ( 'NONE', ( 0.000000000000000000, 45.00000000000000000, -135.3085362679971126 ) ) ; +#1682 = CARTESIAN_POINT ( 'NONE', ( 41.70300804589821553, 16.02837548772470555, 6.859094606483393086 ) ) ; +#1683 = CARTESIAN_POINT ( 'NONE', ( -39.54706189465257893, 22.29032810038464874, -17.75361044965400836 ) ) ; +#1684 = EDGE_LOOP ( 'NONE', ( #692, #2290, #1266, #2236 ) ) ; +#1685 = CARTESIAN_POINT ( 'NONE', ( 37.50000000000000000, 75.00000000000001421, 12.50000000000000000 ) ) ; +#1686 = ORIENTED_EDGE ( 'NONE', *, *, #1548, .F. ) ; +#1687 = FACE_BOUND ( 'NONE', #1326, .T. ) ; +#1688 = FACE_OUTER_BOUND ( 'NONE', #812, .T. ) ; +#1689 = CARTESIAN_POINT ( 'NONE', ( 37.50000000000000000, 5.000000000000004441, -15.25000000000000355 ) ) ; +#1690 = ORIENTED_EDGE ( 'NONE', *, *, #1927, .F. ) ; +#1691 = CARTESIAN_POINT ( 'NONE', ( -42.66701332672604252, 7.427933254001340302, -10.61192693247562602 ) ) ; +#1692 = CARTESIAN_POINT ( 'NONE', ( -42.99999999999999289, 6.284924945759550852, -15.72182540694797659 ) ) ; +#1693 = CIRCLE ( 'NONE', #2191, 2.750000000000002665 ) ; +#1694 = AXIS2_PLACEMENT_3D ( 'NONE', #2151, #1770, #905 ) ; +#1695 = DIRECTION ( 'NONE', ( 1.224646799147352714E-16, -3.556990613648025458E-16, -1.000000000000000000 ) ) ; +#1696 = CARTESIAN_POINT ( 'NONE', ( 35.17200529168162859, 34.99769424202343515, 6.820388475540319462 ) ) ; +#1697 = CARTESIAN_POINT ( 'NONE', ( 40.72182540694797126, 14.10497510537461352, 18.00000000000000000 ) ) ; +#1698 = VERTEX_POINT ( 'NONE', #372 ) ; +#1699 = DIRECTION ( 'NONE', ( 0.000000000000000000, 0.000000000000000000, -1.000000000000000000 ) ) ; +#1700 = VERTEX_POINT ( 'NONE', #580 ) ; +#1701 = AXIS2_PLACEMENT_3D ( 'NONE', #719, #2210, #300 ) ; +#1702 = CARTESIAN_POINT ( 'NONE', ( -33.06726107370904089, 33.84983563589852196, -9.235563272937660884 ) ) ; +#1703 = CARTESIAN_POINT ( 'NONE', ( -33.05945178009036312, 33.84573068575826937, -15.75357449116700259 ) ) ; +#1704 = EDGE_LOOP ( 'NONE', ( #566, #302, #2079, #129 ) ) ; +#1705 = CARTESIAN_POINT ( 'NONE', ( -41.04433338031164880, 17.94149819751921981, -8.028179518177136487 ) ) ; +#1706 = DIRECTION ( 'NONE', ( -0.3348729792147795981, -0.9422632794457278527, 0.000000000000000000 ) ) ; +#1707 = ORIENTED_EDGE ( 'NONE', *, *, #413, .F. ) ; +#1708 = CARTESIAN_POINT ( 'NONE', ( 44.94291777066060689, 6.618047148100196786, 12.71271199270693408 ) ) ; +#1709 = DIRECTION ( 'NONE', ( -0.000000000000000000, -0.000000000000000000, -1.000000000000000000 ) ) ; +#1710 = CARTESIAN_POINT ( 'NONE', ( -40.72182540694797126, 14.10497510537457089, 7.000000000000002665 ) ) ; +#1711 = EDGE_CURVE ( 'NONE', #2690, #2325, #1365, .T. ) ; +#1712 = DIRECTION ( 'NONE', ( -1.000000000000000000, 0.000000000000000000, 0.000000000000000000 ) ) ; +#1713 = ORIENTED_EDGE ( 'NONE', *, *, #2216, .F. ) ; +#1714 = EDGE_CURVE ( 'NONE', #758, #1516, #664, .T. ) ; +#1715 = FACE_BOUND ( 'NONE', #2614, .T. ) ; +#1716 = CARTESIAN_POINT ( 'NONE', ( -32.14518621856249325, 32.72879920981659296, -11.24462381489573914 ) ) ; +#1717 = CARTESIAN_POINT ( 'NONE', ( -34.40849682337891124, 34.70762474206001258, -17.05617626833258171 ) ) ; +#1718 = ORIENTED_EDGE ( 'NONE', *, *, #952, .F. ) ; +#1719 = CARTESIAN_POINT ( 'NONE', ( -40.90041223295983741, 13.49195890306038059, -8.153421727786044571 ) ) ; +#1720 = CARTESIAN_POINT ( 'NONE', ( -43.05645483273637097, 12.09728489066157842, 11.76217390973335242 ) ) ; +#1721 = AXIS2_PLACEMENT_3D ( 'NONE', #1590, #2017, #926 ) ; +#1722 = AXIS2_PLACEMENT_3D ( 'NONE', #1841, #526, #1827 ) ; +#1723 = ORIENTED_EDGE ( 'NONE', *, *, #376, .F. ) ; +#1724 = DIRECTION ( 'NONE', ( -0.000000000000000000, -0.000000000000000000, 1.000000000000000000 ) ) ; +#1725 = CARTESIAN_POINT ( 'NONE', ( 45.50000000000002132, 5.000000000000000000, 4.500000000000003553 ) ) ; +#1726 = DIRECTION ( 'NONE', ( -0.000000000000000000, -1.000000000000000000, -0.000000000000000000 ) ) ; +#1727 = CARTESIAN_POINT ( 'NONE', ( -44.94138669699428590, 6.622494156546728128, -12.76790151328784972 ) ) ; +#1728 = CARTESIAN_POINT ( 'NONE', ( 45.50000000000002132, 5.000000000000000000, -135.3085362679971126 ) ) ; +#1729 = VERTEX_POINT ( 'NONE', #957 ) ; +#1730 = EDGE_CURVE ( 'NONE', #1098, #1438, #1971, .T. ) ; +#1731 = FILL_AREA_STYLE ('',( #880 ) ) ; +#1732 = CARTESIAN_POINT ( 'NONE', ( -34.00738616944651227, 33.97034441269364180, -8.249432599336657290 ) ) ; +#1733 = CARTESIAN_POINT ( 'NONE', ( -32.53716171719081984, 33.42888418853354437, -14.87330331384644566 ) ) ; +#1734 = CARTESIAN_POINT ( 'NONE', ( 42.26572163226823164, 8.805405019717014170, 15.25141648470180122 ) ) ; +#1735 = EDGE_CURVE ( 'NONE', #2620, #988, #946, .T. ) ; +#1736 = ORIENTED_EDGE ( 'NONE', *, *, #1016, .T. ) ; +#1737 = CARTESIAN_POINT ( 'NONE', ( -43.58712382716768730, 10.55595506930876759, -8.514304274908694126 ) ) ; +#1738 = CARTESIAN_POINT ( 'NONE', ( -37.65733024777571814, 27.77905981872053687, 18.11655635681465526 ) ) ; +#1739 = CARTESIAN_POINT ( 'NONE', ( 43.34545552388534162, 11.25788144268420155, 11.08747574047231943 ) ) ; +#1740 = CARTESIAN_POINT ( 'NONE', ( -36.01076853932009669, 30.27612420079753619, -7.152262647838539600 ) ) ; +#1741 = CIRCLE ( 'NONE', #748, 1.000000000000000888 ) ; +#1742 = CARTESIAN_POINT ( 'NONE', ( 0.000000000000000000, 45.00000000000000000, 4.500000000000000888 ) ) ; +#1743 = CARTESIAN_POINT ( 'NONE', ( -31.94552866371286370, 44.36900610829383140, 12.50000000000000000 ) ) ; +#1744 = VECTOR ( 'NONE', #1242, 1000.000000000000000 ) ; +#1745 = CARTESIAN_POINT ( 'NONE', ( 37.50000000000000000, 5.000000000000000000, -12.50000000000000000 ) ) ; +#1746 = CARTESIAN_POINT ( 'NONE', ( -45.50000000000000000, 5.000000000000000000, 20.50000000000000000 ) ) ; +#1747 = CARTESIAN_POINT ( 'NONE', ( -31.94552866371482125, 44.36900610828815417, 12.07457116983854739 ) ) ; +#1748 = CARTESIAN_POINT ( 'NONE', ( 4.000000000000000000, 24.99999999999999645, 20.50000000000000000 ) ) ; +#1749 = CARTESIAN_POINT ( 'NONE', ( 42.57530924775149117, 13.49477380810269445, 15.37803231393592363 ) ) ; +#1750 = AXIS2_PLACEMENT_3D ( 'NONE', #31, #420, #1261 ) ; +#1751 = CARTESIAN_POINT ( 'NONE', ( -35.23995038522426171, 32.88448682190679051, -17.51455095785150462 ) ) ; +#1752 = CARTESIAN_POINT ( 'NONE', ( -41.64362746466510856, 10.94080219668963316, 16.13454712838690952 ) ) ; +#1753 = EDGE_CURVE ( 'NONE', #630, #387, #1229, .T. ) ; +#1754 = CARTESIAN_POINT ( 'NONE', ( -34.79356443061850257, 34.45866161749017209, -7.699244109364620670 ) ) ; +#1755 = LINE ( 'NONE', #16, #2496 ) ; +#1756 = CYLINDRICAL_SURFACE ( 'NONE', #1562, 2.750000000000002665 ) ; +#1757 = LINE ( 'NONE', #876, #97 ) ; +#1758 = ORIENTED_EDGE ( 'NONE', *, *, #519, .F. ) ; +#1759 = CARTESIAN_POINT ( 'NONE', ( -35.86915977639390718, 32.97280677233769808, -18.46760616633223506 ) ) ; +#1760 = CARTESIAN_POINT ( 'NONE', ( -34.11999303975387221, 36.76639026393849008, 8.101832367194113260 ) ) ; +#1761 = DIRECTION ( 'NONE', ( -0.000000000000000000, -0.000000000000000000, -1.000000000000000000 ) ) ; +#1762 = CARTESIAN_POINT ( 'NONE', ( 43.61372823025177325, 10.47868249396899287, 16.46493364688598859 ) ) ; +#1763 = FACE_OUTER_BOUND ( 'NONE', #784, .T. ) ; +#1764 = CARTESIAN_POINT ( 'NONE', ( -41.32601150491565534, 17.12336316791652635, 18.34241424289258404 ) ) ; +#1765 =( BOUNDED_CURVE ( ) B_SPLINE_CURVE ( 3, ( #2464, #1206, #1798, #1609 ), + .UNSPECIFIED., .F., .F. ) + B_SPLINE_CURVE_WITH_KNOTS ( ( 4, 4 ), + ( 0.000000000000000000, 1.570796326794896780 ), + .UNSPECIFIED. ) + CURVE ( ) GEOMETRIC_REPRESENTATION_ITEM ( ) RATIONAL_B_SPLINE_CURVE ( ( 1.000000000000000000, 0.8047378541243649375, 0.8047378541243649375, 1.000000000000000000 ) ) + REPRESENTATION_ITEM ( '' ) ); +#1766 = ORIENTED_EDGE ( 'NONE', *, *, #1714, .T. ) ; +#1767 = EDGE_CURVE ( 'NONE', #2664, #1041, #1354, .T. ) ; +#1768 = CARTESIAN_POINT ( 'NONE', ( -30.09372127563741373, 32.72733336854117425, -11.97801004061737551 ) ) ; +#1769 = CARTESIAN_POINT ( 'NONE', ( -32.51811363536528177, 35.24038309588284790, -10.08858819733316636 ) ) ; +#1770 = DIRECTION ( 'NONE', ( -0.000000000000000000, -0.000000000000000000, -1.000000000000000000 ) ) ; +#1771 = DIRECTION ( 'NONE', ( -0.000000000000000000, -1.000000000000000000, -0.000000000000000000 ) ) ; +#1772 = CARTESIAN_POINT ( 'NONE', ( -35.31999555688396697, 32.64726791736432432, -7.450487090025976755 ) ) ; +#1773 = ADVANCED_FACE ( 'NONE', ( #728 ), #1808, .F. ) ; +#1774 = FACE_OUTER_BOUND ( 'NONE', #1095, .T. ) ; +#1775 = PRODUCT ( 'jsk_fetch_l515headmount', 'jsk_fetch_l515headmount', '', ( #2653 ) ) ; +#1776 = CARTESIAN_POINT ( 'NONE', ( 37.50000000000000000, 0.000000000000000000, 15.25000000000000355 ) ) ; +#1777 = CARTESIAN_POINT ( 'NONE', ( -34.92363111268105058, 32.64726791736432432, -18.46760616633223506 ) ) ; +#1778 = CARTESIAN_POINT ( 'NONE', ( 43.57608948206799226, 10.58800436056431593, 12.97832405503685571 ) ) ; +#1779 = CARTESIAN_POINT ( 'NONE', ( -33.21551960202715748, 33.91540280681631003, -15.95742383256837016 ) ) ; +#1780 = CARTESIAN_POINT ( 'NONE', ( -42.85920530509989845, 6.768216077038087697, 13.74952544841743141 ) ) ; +#1781 = CARTESIAN_POINT ( 'NONE', ( -37.50000000000000000, 6.000000000000005329, 7.000000000000004441 ) ) ; +#1782 = CARTESIAN_POINT ( 'NONE', ( -34.53979528784477537, 34.63182575294872834, -7.855695000733974531 ) ) ; +#1783 = LINE ( 'NONE', #1168, #2016 ) ; +#1784 = CYLINDRICAL_SURFACE ( 'NONE', #1426, 4.000000000000000000 ) ; +#1785 = CARTESIAN_POINT ( 'NONE', ( 32.85740444909578173, 41.72045992200722253, 15.48591936326437768 ) ) ; +#1786 = AXIS2_PLACEMENT_3D ( 'NONE', #2684, #113, #92 ) ; +#1787 = EDGE_CURVE ( 'NONE', #416, #1589, #2443, .T. ) ; +#1788 = VERTEX_POINT ( 'NONE', #739 ) ; +#1789 = CIRCLE ( 'NONE', #848, 2.750000000000002665 ) ; +#1790 =( NAMED_UNIT ( * ) PLANE_ANGLE_UNIT ( ) SI_UNIT ( $, .RADIAN. ) ); +#1791 = DIRECTION ( 'NONE', ( -0.000000000000000000, -1.000000000000000000, -0.000000000000000000 ) ) ; +#1792 = CYLINDRICAL_SURFACE ( 'NONE', #1104, 5.000000000000000000 ) ; +#1793 = CARTESIAN_POINT ( 'NONE', ( -42.91187591077668628, 6.587419232237197164, 13.48473243242434272 ) ) ; +#1794 = CARTESIAN_POINT ( 'NONE', ( -30.10498433482840142, 32.75494340607369992, -11.85069633030392566 ) ) ; +#1795 = AXIS2_PLACEMENT_3D ( 'NONE', #2526, #356, #1214 ) ; +#1796 = CARTESIAN_POINT ( 'NONE', ( -34.62947619760160478, 34.54316338245381246, -6.960556498956810501 ) ) ; +#1797 = CARTESIAN_POINT ( 'NONE', ( 4.000000000000000000, 24.99999999999999645, 20.50000000000000000 ) ) ; +#1798 = CARTESIAN_POINT ( 'NONE', ( -40.72182540694797126, 14.10497510537457089, 18.00000000000000000 ) ) ; +#1799 = DIRECTION ( 'NONE', ( 0.000000000000000000, 0.000000000000000000, -1.000000000000000000 ) ) ; +#1800 = VERTEX_POINT ( 'NONE', #168 ) ; +#1801 = EDGE_CURVE ( 'NONE', #1213, #620, #2163, .T. ) ; +#1802 = SURFACE_STYLE_USAGE ( .BOTH. , #2039 ) ; +#1803 = CARTESIAN_POINT ( 'NONE', ( -32.00000000000000000, 44.04346725332046475, 12.50000000000000000 ) ) ; +#1804 = CARTESIAN_POINT ( 'NONE', ( 37.50000000000000000, 0.000000000000000000, -9.749999999999998224 ) ) ; +#1805 = CARTESIAN_POINT ( 'NONE', ( -37.50000000000000000, 75.00000000000001421, -17.99999999999999645 ) ) ; +#1806 = CARTESIAN_POINT ( 'NONE', ( -36.87935591080476172, 30.03868881233102428, -18.83120745670911234 ) ) ; +#1807 = CARTESIAN_POINT ( 'NONE', ( -32.85153238304921075, 35.18209223698067234, -9.526695088618611251 ) ) ; +#1808 = CYLINDRICAL_SURFACE ( 'NONE', #2326, 2.750000000000002665 ) ; +#1809 = CARTESIAN_POINT ( 'NONE', ( 0.000000000000000000, 10.00000000000000178, 4.500000000000000888 ) ) ; +#1810 = CIRCLE ( 'NONE', #2523, 3.000000000000002665 ) ; +#1811 = CARTESIAN_POINT ( 'NONE', ( 37.50000000000000000, 25.16419609954003533, 7.000000000000004441 ) ) ; +#1812 = ORIENTED_EDGE ( 'NONE', *, *, #1623, .F. ) ; +#1813 = UNCERTAINTY_MEASURE_WITH_UNIT (LENGTH_MEASURE( 1.000000000000000082E-05 ), #1396, 'distance_accuracy_value', 'NONE'); +#1814 = CARTESIAN_POINT ( 'NONE', ( -43.16529390050359183, 11.78116146411781706, 13.64926868012829431 ) ) ; +#1815 = CARTESIAN_POINT ( 'NONE', ( -32.01717275684787012, 32.35121551323180711, -12.94835367935805870 ) ) ; +#1816 = DIRECTION ( 'NONE', ( 0.000000000000000000, -1.000000000000000000, 0.000000000000000000 ) ) ; +#1817 = ADVANCED_FACE ( 'NONE', ( #1891 ), #1269, .F. ) ; +#1818 = CARTESIAN_POINT ( 'NONE', ( -30.07459780443158692, 32.68056142076170545, -12.37086482429206669 ) ) ; +#1819 = SURFACE_STYLE_USAGE ( .BOTH. , #2034 ) ; +#1820 = DIRECTION ( 'NONE', ( 0.000000000000000000, 0.000000000000000000, -1.000000000000000000 ) ) ; +#1821 = CARTESIAN_POINT ( 'NONE', ( -31.22901909779051266, 34.39715868866920800, -9.318116878902950262 ) ) ; +#1822 = CARTESIAN_POINT ( 'NONE', ( 36.78005168385927703, 27.63548691358506915, 18.00000000000000000 ) ) ; +#1823 = VERTEX_POINT ( 'NONE', #1915 ) ; +#1824 = CIRCLE ( 'NONE', #2763, 1.000000000000000888 ) ; +#1825 = CARTESIAN_POINT ( 'NONE', ( -44.92465409814774091, 6.671094044351557173, 11.96873245554875886 ) ) ; +#1826 = ORIENTED_EDGE ( 'NONE', *, *, #1561, .F. ) ; +#1827 = DIRECTION ( 'NONE', ( 1.000000000000000000, 0.000000000000000000, 0.000000000000000000 ) ) ; +#1828 = COLOUR_RGB ( '',0.7921568627450980005, 0.8196078431372548767, 0.9333333333333333481 ) ; +#1829 = DIRECTION ( 'NONE', ( 0.000000000000000000, 0.000000000000000000, -1.000000000000000000 ) ) ; +#1830 = ADVANCED_FACE ( 'NONE', ( #402 ), #422, .F. ) ; +#1831 = CARTESIAN_POINT ( 'NONE', ( -1.750000000000000888, 24.99999999999999645, 4.500000000000000888 ) ) ; +#1832 = DIRECTION ( 'NONE', ( 0.000000000000000000, -1.000000000000000000, 0.000000000000000000 ) ) ; +#1833 = CARTESIAN_POINT ( 'NONE', ( -35.17060090378452486, 34.14936576743428986, -17.50565766128448431 ) ) ; +#1834 = CIRCLE ( 'NONE', #1978, 1.750000000000000888 ) ; +#1835 =( LENGTH_UNIT ( ) NAMED_UNIT ( * ) SI_UNIT ( .MILLI., .METRE. ) ); +#1836 = CARTESIAN_POINT ( 'NONE', ( -30.24108867664220668, 33.09510371101609394, -11.01637359942223959 ) ) ; +#1837 = CARTESIAN_POINT ( 'NONE', ( -44.78057694612991924, 7.089566601276006352, -13.96120021518454912 ) ) ; +#1838 = VERTEX_POINT ( 'NONE', #1051 ) ; +#1839 = CARTESIAN_POINT ( 'NONE', ( -42.98895923545501319, 6.322823416230565208, 12.14024265315041617 ) ) ; +#1840 = ORIENTED_EDGE ( 'NONE', *, *, #74, .T. ) ; +#1841 = CARTESIAN_POINT ( 'NONE', ( 17.22413793103449464, 15.00000000000000000, -20.50000000000000355 ) ) ; +#1842 = CARTESIAN_POINT ( 'NONE', ( -37.50000000000000000, 75.00000000000001421, 12.50000000000000000 ) ) ; +#1843 = ORIENTED_EDGE ( 'NONE', *, *, #823, .F. ) ; +#1844 = CARTESIAN_POINT ( 'NONE', ( -43.55646050725465557, 10.64501678178904953, -13.79302111228574645 ) ) ; +#1845 = FACE_BOUND ( 'NONE', #1537, .T. ) ; +#1846 = CARTESIAN_POINT ( 'NONE', ( -4.000000000000000000, 24.99999999999999645, 20.50000000000000000 ) ) ; +#1847 = ADVANCED_FACE ( 'NONE', ( #2570 ), #1064, .F. ) ; +#1848 = CARTESIAN_POINT ( 'NONE', ( 42.99779078280186440, 6.292508293127117902, 12.32001292924790370 ) ) ; +#1849 = CARTESIAN_POINT ( 'NONE', ( -43.00000000000000000, 6.284924945759544634, -12.50000000000000000 ) ) ; +#1850 = CARTESIAN_POINT ( 'NONE', ( -44.80934957045266742, 7.005996420292152749, -13.83031059393524309 ) ) ; +#1851 = ORIENTED_EDGE ( 'NONE', *, *, #785, .T. ) ; +#1852 = AXIS2_PLACEMENT_3D ( 'NONE', #425, #1943, #2319 ) ; +#1853 = CARTESIAN_POINT ( 'NONE', ( -43.96825760039320130, 9.448950784602933695, 9.065657051501865737 ) ) ; +#1854 = ORIENTED_EDGE ( 'NONE', *, *, #2643, .F. ) ; +#1855 = ORIENTED_EDGE ( 'NONE', *, *, #314, .T. ) ; +#1856 = CARTESIAN_POINT ( 'NONE', ( -33.03257378525533738, 31.99619020741757680, 4.500000000000000888 ) ) ; +#1857 = FACE_OUTER_BOUND ( 'NONE', #137, .T. ) ; +#1858 = CARTESIAN_POINT ( 'NONE', ( -34.84611884792062853, 33.49440101975844186, -7.681646398363541905 ) ) ; +#1859 = ORIENTED_EDGE ( 'NONE', *, *, #1189, .T. ) ; +#1860 = CARTESIAN_POINT ( 'NONE', ( -43.24436591354764658, 11.55149654490020339, -13.81595327377998039 ) ) ; +#1861 = CARTESIAN_POINT ( 'NONE', ( -33.67957420515575961, 35.01001685161236310, -16.45949862367574212 ) ) ; +#1862 = B_SPLINE_CURVE_WITH_KNOTS ( 'NONE', 3, + ( #2018, #975, #723, #98, #773, #120, #1631, #954, #1398, #2279, #2240, #2251 ), + .UNSPECIFIED., .F., .F., + ( 4, 2, 2, 2, 2, 4 ), + ( 0.000000000000000000, 0.001161146787050921017, 0.001741720180576390633, 0.002322293574101860682, 0.004644587148203704885, 0.009289174296407392423 ), + .UNSPECIFIED. ) ; +#1863 = CARTESIAN_POINT ( 'NONE', ( 44.27828862574259006, 8.548464662502123446, 9.623516448636827647 ) ) ; +#1864 = CARTESIAN_POINT ( 'NONE', ( 32.20724408224923252, 43.60885282341502744, 10.94862032847915323 ) ) ; +#1865 = CARTESIAN_POINT ( 'NONE', ( -42.94403121265324330, 6.477043111662483810, -13.29080388371014187 ) ) ; +#1866 = ORIENTED_EDGE ( 'NONE', *, *, #390, .T. ) ; +#1867 = EDGE_CURVE ( 'NONE', #887, #2555, #829, .T. ) ; +#1868 = CARTESIAN_POINT ( 'NONE', ( -44.07774513821160411, 9.130943874690093054, 9.248325972625037750 ) ) ; +#1869 = VERTEX_POINT ( 'NONE', #1689 ) ; +#1870 = VERTEX_POINT ( 'NONE', #198 ) ; +#1871 = CYLINDRICAL_SURFACE ( 'NONE', #2022, 3.000000000000002665 ) ; +#1872 = AXIS2_PLACEMENT_3D ( 'NONE', #1451, #2580, #2377 ) ; +#1873 = CARTESIAN_POINT ( 'NONE', ( -30.09345630165302765, 32.72668401948667594, -11.98152477718937092 ) ) ; +#1874 = AXIS2_PLACEMENT_3D ( 'NONE', #499, #1820, #141 ) ; +#1875 = CARTESIAN_POINT ( 'NONE', ( -37.50000000000000000, 5.000000000000000000, 12.50000000000000000 ) ) ; +#1876 = ORIENTED_EDGE ( 'NONE', *, *, #314, .F. ) ; +#1877 = CARTESIAN_POINT ( 'NONE', ( -42.77379477138983788, 7.061395827092919575, -10.93477307200270232 ) ) ; +#1878 = CARTESIAN_POINT ( 'NONE', ( -44.94552866371285660, 6.610463800732930828, 12.50000000000000000 ) ) ; +#1879 = CARTESIAN_POINT ( 'NONE', ( -33.34895536105618419, 35.09410072600955743, -16.11356605787576513 ) ) ; +#1880 =( NAMED_UNIT ( * ) SI_UNIT ( $, .STERADIAN. ) SOLID_ANGLE_UNIT ( ) ); +#1881 = CARTESIAN_POINT ( 'NONE', ( 32.00000000000000000, 44.04346725331898682, 12.14002175909385883 ) ) ; +#1882 = CARTESIAN_POINT ( 'NONE', ( -40.06395933689310596, 20.78899779720995156, -17.53901762858859925 ) ) ; +#1883 = EDGE_LOOP ( 'NONE', ( #461, #105, #1379, #833, #2345, #769 ) ) ; +#1884 = CIRCLE ( 'NONE', #1750, 5.000000000000000000 ) ; +#1885 = CIRCLE ( 'NONE', #1795, 5.000000000000000888 ) ; +#1886 = CARTESIAN_POINT ( 'NONE', ( -34.92363111268105769, 32.64726791736432432, -6.532393833667062388 ) ) ; +#1887 = EDGE_LOOP ( 'NONE', ( #2372, #1497 ) ) ; +#1888 = CARTESIAN_POINT ( 'NONE', ( -4.000000000000001776, 65.00000000000000000, 9.500000000000001776 ) ) ; +#1889 = EDGE_CURVE ( 'NONE', #1614, #1947, #964, .T. ) ; +#1890 = DIRECTION ( 'NONE', ( 1.000000000000000000, 0.000000000000000000, -1.224646799147353207E-16 ) ) ; +#1891 = FACE_OUTER_BOUND ( 'NONE', #1704, .T. ) ; +#1892 = EDGE_CURVE ( 'NONE', #776, #2749, #1274, .T. ) ; +#1893 = EDGE_LOOP ( 'NONE', ( #35, #369 ) ) ; +#1894 = DIRECTION ( 'NONE', ( -0.000000000000000000, -0.000000000000000000, -1.000000000000000000 ) ) ; +#1895 = CARTESIAN_POINT ( 'NONE', ( -42.98233690606029000, 6.345555189378104366, 12.94953407607416374 ) ) ; +#1896 = CARTESIAN_POINT ( 'NONE', ( 4.000000000000001776, 65.00000000000000000, 20.50000000000000000 ) ) ; +#1897 = CARTESIAN_POINT ( 'NONE', ( 41.13454712838648675, 12.68826868899496318, 8.356372535334470442 ) ) ; +#1898 = CARTESIAN_POINT ( 'NONE', ( -43.55993684666788823, 10.63491974264957030, -13.07039899048681342 ) ) ; +#1899 = ORIENTED_EDGE ( 'NONE', *, *, #1141, .F. ) ; +#1900 = DIRECTION ( 'NONE', ( 0.9455286637128581528, 0.3255388549733763681, -0.000000000000000000 ) ) ; +#1901 = ORIENTED_EDGE ( 'NONE', *, *, #2671, .F. ) ; +#1902 = PLANE ( 'NONE', #678 ) ; +#1903 = CARTESIAN_POINT ( 'NONE', ( -30.14861977122593473, 32.86258940435795495, -13.52432456679505535 ) ) ; +#1904 = CARTESIAN_POINT ( 'NONE', ( -31.17158371284658358, 32.72879920981659296, -11.01637359942223959 ) ) ; +#1905 = ORIENTED_EDGE ( 'NONE', *, *, #1201, .T. ) ; +#1906 = CARTESIAN_POINT ( 'NONE', ( -37.96348091318344586, 26.88984421472649444, -6.923752528081378088 ) ) ; +#1907 = CARTESIAN_POINT ( 'NONE', ( -44.92465409814780486, 6.671094044351380425, 13.03126754445123403 ) ) ; +#1908 = CARTESIAN_POINT ( 'NONE', ( 44.93248048743234335, 6.648362271204079299, 12.92516777354952673 ) ) ; +#1909 = CARTESIAN_POINT ( 'NONE', ( 42.57530924774187753, 13.49477380811571336, 9.621967686071759118 ) ) ; +#1910 = CARTESIAN_POINT ( 'NONE', ( 44.94552866371285660, 6.610463800732987671, 12.50000000000000000 ) ) ; +#1911 = EDGE_LOOP ( 'NONE', ( #1439, #1766, #206, #1659, #217 ) ) ; +#1912 = DIRECTION ( 'NONE', ( -1.000000000000000000, 0.000000000000000000, 0.000000000000000000 ) ) ; +#1913 = ORIENTED_EDGE ( 'NONE', *, *, #1070, .F. ) ; +#1914 = CYLINDRICAL_SURFACE ( 'NONE', #2588, 2.750000000000002665 ) ; +#1915 = CARTESIAN_POINT ( 'NONE', ( -30.24108867664220668, 33.09510371101609394, -0.4999999999999995559 ) ) ; +#1916 = ORIENTED_EDGE ( 'NONE', *, *, #736, .T. ) ; +#1917 = CARTESIAN_POINT ( 'NONE', ( -44.29376301731586096, 8.503519241817201646, -9.650451582590376276 ) ) ; +#1918 = VECTOR ( 'NONE', #69, 1000.000000000000114 ) ; +#1919 = DIRECTION ( 'NONE', ( 0.000000000000000000, 0.000000000000000000, -1.000000000000000000 ) ) ; +#1920 = CIRCLE ( 'NONE', #1966, 4.499999999999997335 ) ; +#1921 = EDGE_CURVE ( 'NONE', #1800, #1788, #1627, .T. ) ; +#1922 =( BOUNDED_CURVE ( ) B_SPLINE_CURVE ( 3, ( #2748, #834, #1265, #1310 ), + .UNSPECIFIED., .F., .F. ) + B_SPLINE_CURVE_WITH_KNOTS ( ( 4, 4 ), + ( 3.141592653589793116, 4.712388980384689674 ), + .UNSPECIFIED. ) + CURVE ( ) GEOMETRIC_REPRESENTATION_ITEM ( ) RATIONAL_B_SPLINE_CURVE ( ( 1.000000000000000000, 0.8047378541243649375, 0.8047378541243649375, 1.000000000000000000 ) ) + REPRESENTATION_ITEM ( '' ) ); +#1923 = DIRECTION ( 'NONE', ( 0.000000000000000000, -1.000000000000000000, 0.000000000000000000 ) ) ; +#1924 = CARTESIAN_POINT ( 'NONE', ( 38.21994831615298693, 22.69290528549761987, 7.000000000000002665 ) ) ; +#1925 = FACE_BOUND ( 'NONE', #576, .T. ) ; +#1926 = ORIENTED_EDGE ( 'NONE', *, *, #2226, .T. ) ; +#1927 = EDGE_CURVE ( 'NONE', #2740, #620, #248, .T. ) ; +#1928 = DIRECTION ( 'NONE', ( 0.000000000000000000, 0.000000000000000000, -1.000000000000000000 ) ) ; +#1929 = ORIENTED_EDGE ( 'NONE', *, *, #1767, .F. ) ; +#1930 = CARTESIAN_POINT ( 'NONE', ( -37.50000000000000000, 25.16419609954000691, 17.99999999999999645 ) ) ; +#1931 = DIRECTION ( 'NONE', ( 0.000000000000000000, 0.000000000000000000, -1.000000000000000000 ) ) ; +#1932 = CARTESIAN_POINT ( 'NONE', ( -30.28348284022550274, 33.20279433083954501, -14.10418142956314469 ) ) ; +#1933 = VERTEX_POINT ( 'NONE', #2117 ) ; +#1934 = CARTESIAN_POINT ( 'NONE', ( -42.70553305318818360, 13.11653834140497921, -9.802824372074068648 ) ) ; +#1935 = CARTESIAN_POINT ( 'NONE', ( -43.01186382226871530, 12.22679962567663914, 12.11340478804969578 ) ) ; +#1936 = ORIENTED_EDGE ( 'NONE', *, *, #1016, .F. ) ; +#1937 = CARTESIAN_POINT ( 'NONE', ( 44.92465409814774091, 6.671094044351608687, 13.03126754445124114 ) ) ; +#1938 = EDGE_CURVE ( 'NONE', #387, #1264, #2568, .T. ) ; +#1939 = DIRECTION ( 'NONE', ( -1.000000000000000000, 0.000000000000000000, 0.000000000000000000 ) ) ; +#1940 = DIRECTION ( 'NONE', ( -1.000000000000000000, 0.000000000000000000, 0.000000000000000000 ) ) ; +#1941 = DIRECTION ( 'NONE', ( 0.000000000000000000, -1.000000000000000000, 0.000000000000000000 ) ) ; +#1942 = EDGE_CURVE ( 'NONE', #550, #1642, #515, .T. ) ; +#1943 = DIRECTION ( 'NONE', ( 0.000000000000000000, -1.000000000000000000, 0.000000000000000000 ) ) ; +#1944 = EDGE_LOOP ( 'NONE', ( #2529, #1186, #1484, #1876 ) ) ; +#1945 = CARTESIAN_POINT ( 'NONE', ( 0.000000000000000000, 65.00000000000000000, 20.50000000000000000 ) ) ; +#1946 = CARTESIAN_POINT ( 'NONE', ( -34.03521183783485782, 34.88566710271816618, -16.77526415812417326 ) ) ; +#1947 = VERTEX_POINT ( 'NONE', #2738 ) ; +#1948 = CARTESIAN_POINT ( 'NONE', ( -44.03943411685308007, 9.242218360906406360, -9.178856669887151654 ) ) ; +#1949 = CARTESIAN_POINT ( 'NONE', ( -40.14688991242650218, 20.54812567066732854, 18.83082239818493520 ) ) ; +#1950 = CIRCLE ( 'NONE', #1721, 8.000000000000000000 ) ; +#1951 = ORIENTED_EDGE ( 'NONE', *, *, #581, .T. ) ; +#1952 = CARTESIAN_POINT ( 'NONE', ( 31.00000000000000355, 44.04346725332046475, 12.50000000000000000 ) ) ; +#1953 = DIRECTION ( 'NONE', ( -0.9422632794457277416, 0.3348729792147797646, -0.000000000000000000 ) ) ; +#1954 = CARTESIAN_POINT ( 'NONE', ( -37.50000000000000000, 5.000000000000000000, -12.50000000000000000 ) ) ; +#1955 = CARTESIAN_POINT ( 'NONE', ( 45.50000000000002132, 5.000000000000000000, -20.50000000000000000 ) ) ; +#1956 = VERTEX_POINT ( 'NONE', #824 ) ; +#1957 = EDGE_CURVE ( 'NONE', #1000, #1369, #2528, .T. ) ; +#1958 = CARTESIAN_POINT ( 'NONE', ( -31.57655150778580122, 34.62265474847123414, -16.06343561369301653 ) ) ; +#1959 = CARTESIAN_POINT ( 'NONE', ( -32.17590843201791984, 43.43964489217512437, 11.07394587425399379 ) ) ; +#1960 = CARTESIAN_POINT ( 'NONE', ( 0.000000000000000000, 45.00000000000000000, -0.4999999999999995559 ) ) ; +#1961 = CARTESIAN_POINT ( 'NONE', ( 34.45097498342184394, 37.09192911890503552, 17.69783447513438546 ) ) ; +#1962 = VERTEX_POINT ( 'NONE', #1257 ) ; +#1963 = CARTESIAN_POINT ( 'NONE', ( -41.56879248528925785, 16.41820502030821061, -6.774416357035755176 ) ) ; +#1964 = CARTESIAN_POINT ( 'NONE', ( -42.71092435547762278, 7.277204487012604694, 14.26880262041526670 ) ) ; +#1965 = ORIENTED_EDGE ( 'NONE', *, *, #564, .F. ) ; +#1966 = AXIS2_PLACEMENT_3D ( 'NONE', #1566, #24, #895 ) ; +#1967 = CARTESIAN_POINT ( 'NONE', ( -32.80202257256530629, 33.68525208390452974, -9.630770214105424998 ) ) ; +#1968 = CARTESIAN_POINT ( 'NONE', ( 0.000000000000000000, 65.00000000000000000, 20.50000000000000000 ) ) ; +#1969 = AXIS2_PLACEMENT_3D ( 'NONE', #1954, #1352, #2416 ) ; +#1970 = CARTESIAN_POINT ( 'NONE', ( -37.50000000000000000, 5.000000000000004441, -15.25000000000000355 ) ) ; +#1971 = CIRCLE ( 'NONE', #896, 4.499999999999997335 ) ; +#1972 = DIRECTION ( 'NONE', ( 0.000000000000000000, -1.000000000000000000, 0.000000000000000000 ) ) ; +#1973 = CARTESIAN_POINT ( 'NONE', ( -33.90682669663748783, 34.88402129174354371, -17.71860934597597748 ) ) ; +#1974 = CARTESIAN_POINT ( 'NONE', ( -32.00000000000000000, 44.04346725331308221, 12.14002175909410930 ) ) ; +#1975 = EDGE_CURVE ( 'NONE', #2058, #1823, #1810, .T. ) ; +#1976 = FACE_OUTER_BOUND ( 'NONE', #2177, .T. ) ; +#1977 = CARTESIAN_POINT ( 'NONE', ( 43.65830555055661222, 10.34920752206666883, 12.45125492979268245 ) ) ; +#1978 = AXIS2_PLACEMENT_3D ( 'NONE', #62, #1996, #507 ) ; +#1979 = CARTESIAN_POINT ( 'NONE', ( -34.00642026789550698, 33.97049140113600885, -16.74974570788206663 ) ) ; +#1980 = CARTESIAN_POINT ( 'NONE', ( -44.07774513821154017, 9.130943874690295559, 15.75167402737479705 ) ) ; +#1981 = EDGE_CURVE ( 'NONE', #175, #2211, #10, .T. ) ; +#1982 = CARTESIAN_POINT ( 'NONE', ( -32.06470902937228118, 32.48963762489935192, -13.36790182820358730 ) ) ; +#1983 = CARTESIAN_POINT ( 'NONE', ( -31.20068707187684964, 34.38402335589851333, -9.344251165861859221 ) ) ; +#1984 = DIRECTION ( 'NONE', ( -0.9422632794457277416, 0.3348729792147797646, 0.000000000000000000 ) ) ; +#1985 = FACE_BOUND ( 'NONE', #1355, .T. ) ; +#1986 = CARTESIAN_POINT ( 'NONE', ( 31.98742823517704892, 44.24730866661698769, 13.35083749214626891 ) ) ; +#1987 = ORIENTED_EDGE ( 'NONE', *, *, #2115, .T. ) ; +#1988 = CARTESIAN_POINT ( 'NONE', ( -35.45182304767064352, 33.77936032244413411, -18.34026773097174257 ) ) ; +#1989 = LINE ( 'NONE', #2406, #1505 ) ; +#1990 = DIRECTION ( 'NONE', ( -0.000000000000000000, 1.000000000000000000, -0.000000000000000000 ) ) ; +#1991 = CARTESIAN_POINT ( 'NONE', ( 41.62144033389574815, 16.26528917268565166, 16.48460089004631612 ) ) ; +#1992 = CARTESIAN_POINT ( 'NONE', ( -34.84571189710230499, 33.49490940725474530, -17.31814595735079720 ) ) ; +#1993 = CARTESIAN_POINT ( 'NONE', ( -43.54841234349528634, 10.66839269962361314, 11.16680329600029253 ) ) ; +#1994 = EDGE_CURVE ( 'NONE', #30, #1589, #1950, .T. ) ; +#1995 = AXIS2_PLACEMENT_3D ( 'NONE', #1252, #604, #1061 ) ; +#1996 = DIRECTION ( 'NONE', ( -0.000000000000000000, -0.000000000000000000, 1.000000000000000000 ) ) ; +#1997 = CARTESIAN_POINT ( 'NONE', ( -33.62933954372219603, 34.94128602345796963, -7.429681065369031501 ) ) ; +#1998 = FACE_OUTER_BOUND ( 'NONE', #1436, .T. ) ; +#1999 = CARTESIAN_POINT ( 'NONE', ( 17.22413793103449464, 15.00000000000000000, 79.70475956827036157 ) ) ; +#2000 = CARTESIAN_POINT ( 'NONE', ( 32.65564714380937517, 42.30646467182854309, 15.14364952153606758 ) ) ; +#2001 = ORIENTED_EDGE ( 'NONE', *, *, #963, .T. ) ; +#2002 = CARTESIAN_POINT ( 'NONE', ( -30.45604614282525446, 33.55384789772586629, -14.51865482684744357 ) ) ; +#2003 = CARTESIAN_POINT ( 'NONE', ( -37.50000000000000000, 75.00000000000001421, -7.000000000000004441 ) ) ; +#2004 = CARTESIAN_POINT ( 'NONE', ( -32.14518621856249325, 32.72879920981659296, -13.75537618510426086 ) ) ; +#2005 = CARTESIAN_POINT ( 'NONE', ( -42.51245935571762402, 7.958454404286162465, 14.77104525622273634 ) ) ; +#2006 = CARTESIAN_POINT ( 'NONE', ( -31.71044961685591446, 36.78254263397548840, -11.54477014384589850 ) ) ; +#2007 = CARTESIAN_POINT ( 'NONE', ( -34.33891446344943432, 33.86159807794278720, -7.997740211241990416 ) ) ; +#2008 = CARTESIAN_POINT ( 'NONE', ( 17.22413793103449464, 5.000000000000000888, 4.500000000000003553 ) ) ; +#2009 = DIRECTION ( 'NONE', ( -0.000000000000000000, -1.000000000000000000, -0.000000000000000000 ) ) ; +#2010 = EDGE_CURVE ( 'NONE', #440, #630, #2699, .T. ) ; +#2011 = CARTESIAN_POINT ( 'NONE', ( 32.03545348354654720, 43.92176981164326577, 13.21993941643139436 ) ) ; +#2012 = AXIS2_PLACEMENT_3D ( 'NONE', #1999, #2578, #1132 ) ; +#2013 = ORIENTED_EDGE ( 'NONE', *, *, #2183, .F. ) ; +#2014 = EDGE_CURVE ( 'NONE', #2155, #116, #83, .T. ) ; +#2015 = VECTOR ( 'NONE', #151, 1000.000000000000000 ) ; +#2016 = VECTOR ( 'NONE', #1662, 1000.000000000000000 ) ; +#2017 = DIRECTION ( 'NONE', ( -0.000000000000000000, -0.000000000000000000, 1.000000000000000000 ) ) ; +#2018 = CARTESIAN_POINT ( 'NONE', ( -33.45489901264950561, 39.98503501767059021, 4.500000000000003553 ) ) ; +#2019 = DIRECTION ( 'NONE', ( -1.000000000000000000, 0.000000000000000000, 0.000000000000000000 ) ) ; +#2020 = CIRCLE ( 'NONE', #809, 2.750000000000002665 ) ; +#2021 = CARTESIAN_POINT ( 'NONE', ( -32.12337896459407460, 32.66333205226038672, -11.33764277245682450 ) ) ; +#2022 = AXIS2_PLACEMENT_3D ( 'NONE', #1856, #150, #1004 ) ; +#2023 = CARTESIAN_POINT ( 'NONE', ( -32.40283745485356803, 33.25449857238987050, -10.43096154852584334 ) ) ; +#2024 = DIRECTION ( 'NONE', ( 0.000000000000000000, 0.000000000000000000, -1.000000000000000000 ) ) ; +#2025 = CARTESIAN_POINT ( 'NONE', ( -35.70923006206639627, 33.36694497305119000, -18.42096702102175954 ) ) ; +#2026 = EDGE_CURVE ( 'NONE', #1315, #2211, #939, .T. ) ; +#2027 = CARTESIAN_POINT ( 'NONE', ( -37.50000000000000000, 5.000000000000000000, -7.000000000000004441 ) ) ; +#2028 = ORIENTED_EDGE ( 'NONE', *, *, #284, .T. ) ; +#2029 = CARTESIAN_POINT ( 'NONE', ( -43.20911154149832356, 11.65389298324840794, 13.74738253265919496 ) ) ; +#2030 = CARTESIAN_POINT ( 'NONE', ( -44.94552866371285660, 6.610463800732931716, -12.50000000000000000 ) ) ; +#2031 =( BOUNDED_SURFACE ( ) B_SPLINE_SURFACE ( 3, 2, ( + ( #813, #1400, #332 ), + ( #1460, #2088, #596 ), + ( #2682, #170, #1191 ), + ( #1619, #122, #1444 ), + ( #761, #2504, #2267 ), + ( #345, #1860, #1204 ), + ( #2074, #1431, #583 ), + ( #567, #2297, #1231 ), + ( #2312, #154, #2104 ), + ( #139, #1844, #1024 ), + ( #993, #1244, #1877 ), + ( #185, #2696, #1503 ), + ( #1301, #201, #1691 ), + ( #255, #448, #42 ), + ( #1917, #2545, #1068 ), + ( #1948, #2573, #2 ), + ( #2161, #239, #1678 ), + ( #1737, #624, #610 ), + ( #1473, #1096, #884 ), + ( #2144, #1934, #1054 ), + ( #1113, #2174, #1719 ), + ( #1963, #28, #855 ), + ( #2366, #1705, #2530 ), + ( #1272, #2589, #1489 ), + ( #840, #13, #2327 ), + ( #1286, #669, #1535 ), + ( #2384, #1906, #2340 ), + ( #870, #417, #462 ), + ( #1316, #1517, #1259 ), + ( #404, #2755, #226 ) ), + .UNSPECIFIED., .F., .F., .T. ) + B_SPLINE_SURFACE_WITH_KNOTS ( ( 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4 ), + ( 3, 3 ), + ( 0.000000000000000000, 0.06182343355040228333, 0.1236468671008045667, 0.1854703006512068431, 0.2472937342016091333, 0.3091171677520114236, 0.3709406013024136861, 0.4945874684032182667, 0.6182343355040228472, 0.7418812026048273722, 0.9891749368064365333, 1.236468671008045694, 1.483762405209654744, 1.731056139411264017, 1.978349873612873067 ), + ( 0.000000000000000000, 1.000000000000000000 ), + .UNSPECIFIED. ) + GEOMETRIC_REPRESENTATION_ITEM ( ) RATIONAL_B_SPLINE_SURFACE ( ( + ( 1.000000000000000000, 0.1650323245415012685, 1.000000000000000000), + ( 1.000000000000000000, 0.1650295672437424033, 1.000000000000000000), + ( 1.000000000000000000, 0.1659522367849533553, 1.000000000000000000), + ( 1.000000000000000000, 0.1695406270279371519, 1.000000000000000000), + ( 1.000000000000000000, 0.1722066456629676168, 1.000000000000000000), + ( 1.000000000000000000, 0.1790482828115376179, 1.000000000000000000), + ( 1.000000000000000000, 0.1832210536907214193, 1.000000000000000000), + ( 1.000000000000000000, 0.1927776193290985096, 1.000000000000000000), + ( 1.000000000000000000, 0.1981596860165199536, 1.000000000000000000), + ( 1.000000000000000000, 0.2098496721005897458, 1.000000000000000000), + ( 1.000000000000000000, 0.2161570347703708483, 1.000000000000000000), + ( 1.000000000000000000, 0.2294594316546308965, 1.000000000000000000), + ( 1.000000000000000000, 0.2364545543617102563, 1.000000000000000000), + ( 1.000000000000000000, 0.2581920883496749419, 1.000000000000000000), + ( 1.000000000000000000, 0.2736703402487685732, 1.000000000000000000), + ( 1.000000000000000000, 0.3056035870501948581, 1.000000000000000000), + ( 1.000000000000000000, 0.3220670159437838964, 1.000000000000000000), + ( 1.000000000000000000, 0.3554073528904945767, 1.000000000000000000), + ( 1.000000000000000000, 0.3722889375824524616, 1.000000000000000000), + ( 1.000000000000000000, 0.4230301067165325168, 1.000000000000000000), + ( 1.000000000000000000, 0.4569611680061238523, 1.000000000000000000), + ( 1.000000000000000000, 0.5233918139849701445, 1.000000000000000000), + ( 1.000000000000000000, 0.5559131927636226100, 1.000000000000000000), + ( 1.000000000000000000, 0.6185992827450953468, 1.000000000000000000), + ( 1.000000000000000000, 0.6487707199100192224, 1.000000000000000000), + ( 1.000000000000000000, 0.7060804060503472757, 1.000000000000000000), + ( 1.000000000000000000, 0.7332210067120173980, 1.000000000000000000), + ( 1.000000000000000000, 0.7839358397906480702, 1.000000000000000000), + ( 1.000000000000000000, 0.8075124374852987730, 1.000000000000000000), + ( 1.000000000000000000, 0.8290880361187438208, 1.000000000000000000) ) ) + REPRESENTATION_ITEM ( '' ) SURFACE ( ) ); +#2032 = DIRECTION ( 'NONE', ( -0.000000000000000000, -1.000000000000000000, -0.000000000000000000 ) ) ; +#2033 = CARTESIAN_POINT ( 'NONE', ( -31.80139523032111271, 36.96912281376587828, -11.61668358927950706 ) ) ; +#2034 = SURFACE_SIDE_STYLE ('',( #323 ) ) ; +#2035 = DIRECTION ( 'NONE', ( 0.000000000000000000, 0.000000000000000000, -1.000000000000000000 ) ) ; +#2036 = VECTOR ( 'NONE', #2112, 1000.000000000000000 ) ; +#2037 = CARTESIAN_POINT ( 'NONE', ( 42.65021550190652277, 7.485593379377545986, 14.43847249979323522 ) ) ; +#2038 = ORIENTED_EDGE ( 'NONE', *, *, #1867, .F. ) ; +#2039 = SURFACE_SIDE_STYLE ('',( #2260 ) ) ; +#2040 = CARTESIAN_POINT ( 'NONE', ( -42.95367559951914416, 6.443937839889548158, 11.78200188557550376 ) ) ; +#2041 = ORIENTED_EDGE ( 'NONE', *, *, #2348, .F. ) ; +#2042 = DIRECTION ( 'NONE', ( -0.000000000000000000, -1.000000000000000000, -0.000000000000000000 ) ) ; +#2043 = EDGE_CURVE ( 'NONE', #2761, #2706, #1989, .T. ) ; +#2044 = CARTESIAN_POINT ( 'NONE', ( -32.80462327031899150, 41.87376302754497459, 15.75747938236831125 ) ) ; +#2045 = CARTESIAN_POINT ( 'NONE', ( -34.27817459305202874, 36.22341709370545715, 7.000000000000002665 ) ) ; +#2046 = CARTESIAN_POINT ( 'NONE', ( -35.09071288550256895, 34.18825145781231356, -6.783385553241092936 ) ) ; +#2047 = DIRECTION ( 'NONE', ( 0.000000000000000000, 0.000000000000000000, -1.000000000000000000 ) ) ; +#2048 = CARTESIAN_POINT ( 'NONE', ( 42.98895923545502029, 6.322823416230407112, 12.14024265315049966 ) ) ; +#2049 = CARTESIAN_POINT ( 'NONE', ( 41.64362746466424881, 10.94080219669020870, 16.13454712838777283 ) ) ; +#2050 = EDGE_LOOP ( 'NONE', ( #892, #194, #1047, #1303 ) ) ; +#2051 = CIRCLE ( 'NONE', #2718, 4.000000000000001776 ) ; +#2052 = CARTESIAN_POINT ( 'NONE', ( -44.60389381109560958, 7.602743341985648051, 10.40959690314558017 ) ) ; +#2053 = EDGE_LOOP ( 'NONE', ( #426, #1091, #1916, #162, #1418 ) ) ; +#2054 = LINE ( 'NONE', #1591, #965 ) ; +#2055 = AXIS2_PLACEMENT_3D ( 'NONE', #554, #1832, #2268 ) ; +#2056 = CARTESIAN_POINT ( 'NONE', ( -32.72692620558953536, 41.54822417257172162, 15.25632870815823772 ) ) ; +#2057 = EDGE_CURVE ( 'NONE', #1630, #2512, #1323, .T. ) ; +#2058 = VERTEX_POINT ( 'NONE', #1542 ) ; +#2059 = ADVANCED_FACE ( 'NONE', ( #1136 ), #329, .T. ) ; +#2060 = CARTESIAN_POINT ( 'NONE', ( -35.84274608350956726, 33.07029903827023531, -7.219395649130901482 ) ) ; +#2061 = CARTESIAN_POINT ( 'NONE', ( -28.36585991138575125, 54.76616564920128383, 4.500000000000003553 ) ) ; +#2062 = CIRCLE ( 'NONE', #2426, 2.750000000000002665 ) ; +#2063 = CARTESIAN_POINT ( 'NONE', ( 37.50000000000000000, 5.000000000000000000, 17.99999999999999645 ) ) ; +#2064 = CARTESIAN_POINT ( 'NONE', ( -31.69050009878254670, 34.68285970349573688, -8.823244160955214355 ) ) ; +#2065 = CARTESIAN_POINT ( 'NONE', ( -44.71499975903609680, 7.280035754606219989, -14.22095176989863496 ) ) ; +#2066 = EDGE_LOOP ( 'NONE', ( #559, #1758, #2347, #1936 ) ) ; +#2067 = CARTESIAN_POINT ( 'NONE', ( -41.62144033389959930, 16.26528917268317542, 8.515399109952078049 ) ) ; +#2068 = VERTEX_POINT ( 'NONE', #1090 ) ; +#2069 = ORIENTED_EDGE ( 'NONE', *, *, #2026, .F. ) ; +#2070 = FACE_OUTER_BOUND ( 'NONE', #2222, .T. ) ; +#2071 = CARTESIAN_POINT ( 'NONE', ( -32.17590843201798378, 43.43964489217511726, 13.92605412574633839 ) ) ; +#2072 = CARTESIAN_POINT ( 'NONE', ( -34.58342906573181352, 33.72076100159020484, -7.835629092645943317 ) ) ; +#2073 = ORIENTED_EDGE ( 'NONE', *, *, #1519, .F. ) ; +#2074 = CARTESIAN_POINT ( 'NONE', ( -44.85875296978372972, 6.862504086155298388, -11.43299634048594626 ) ) ; +#2075 = CARTESIAN_POINT ( 'NONE', ( -30.43907819221767497, 33.50842507884905075, -14.46730229209869911 ) ) ; +#2076 = CARTESIAN_POINT ( 'NONE', ( 44.92465409814780486, 6.671094044351431940, 11.96873245554876775 ) ) ; +#2077 = CARTESIAN_POINT ( 'NONE', ( 42.74090254271485634, 13.01380754396811845, 7.602985723577521782 ) ) ; +#2078 = CARTESIAN_POINT ( 'NONE', ( -44.03943411685344955, 9.242218360905292585, -15.82114333011278973 ) ) ; +#2079 = ORIENTED_EDGE ( 'NONE', *, *, #1735, .T. ) ; +#2080 = CIRCLE ( 'NONE', #110, 2.750000000000002665 ) ; +#2081 = AXIS2_PLACEMENT_3D ( 'NONE', #341, #745, #551 ) ; +#2082 = CARTESIAN_POINT ( 'NONE', ( -42.41046231078216522, 13.97357227301042570, 7.331800433583932630 ) ) ; +#2083 = EDGE_LOOP ( 'NONE', ( #2716, #2721, #1008, #641 ) ) ; +#2084 = ORIENTED_EDGE ( 'NONE', *, *, #721, .F. ) ; +#2085 = CARTESIAN_POINT ( 'NONE', ( 28.36585991138574769, 54.76616564920129804, 4.500000000000003553 ) ) ; +#2086 = CARTESIAN_POINT ( 'NONE', ( 31.94552866371285660, 44.36900610829382430, 25.49999999999999645 ) ) ; +#2087 = EDGE_LOOP ( 'NONE', ( #991, #412, #2307, #1854 ) ) ; +#2088 = CARTESIAN_POINT ( 'NONE', ( -43.00000000007026557, 12.26125813586037872, -12.74474028311317220 ) ) ; +#2089 = CARTESIAN_POINT ( 'NONE', ( -33.51955988454129454, 33.98472066379684975, -16.29747460035643414 ) ) ; +#2090 = CARTESIAN_POINT ( 'NONE', ( 44.36934426592454628, 8.283993259259633035, 9.816037424464214567 ) ) ; +#2091 = EDGE_CURVE ( 'NONE', #1271, #1869, #2080, .T. ) ; +#2092 = CARTESIAN_POINT ( 'NONE', ( 32.00000000000000000, 44.21079393477482000, 12.49999999999999822 ) ) ; +#2093 = CARTESIAN_POINT ( 'NONE', ( -42.11335358391571049, 9.328422783357867232, -15.50305764469500325 ) ) ; +#2094 = ORIENTED_EDGE ( 'NONE', *, *, #263, .F. ) ; +#2095 = ADVANCED_FACE ( 'NONE', ( #1496 ), #2125, .F. ) ; +#2096 = CARTESIAN_POINT ( 'NONE', ( -37.50000000000000000, 25.16419609954000691, -7.000000000000004441 ) ) ; +#2097 = ORIENTED_EDGE ( 'NONE', *, *, #2643, .T. ) ; +#2098 = DIRECTION ( 'NONE', ( 0.000000000000000000, 0.000000000000000000, 1.000000000000000000 ) ) ; +#2099 = DIRECTION ( 'NONE', ( 0.000000000000000000, 0.000000000000000000, -1.000000000000000000 ) ) ; +#2100 = CIRCLE ( 'NONE', #1786, 5.499999999999996447 ) ; +#2101 = CARTESIAN_POINT ( 'NONE', ( 37.50000000000000000, 25.16419609954003533, 7.000000000000004441 ) ) ; +#2102 = VERTEX_POINT ( 'NONE', #2361 ) ; +#2103 = AXIS2_PLACEMENT_3D ( 'NONE', #1492, #1923, #4 ) ; +#2104 = CARTESIAN_POINT ( 'NONE', ( -42.86042546973749268, 6.764027746302351929, -11.26359981792067089 ) ) ; +#2105 = CARTESIAN_POINT ( 'NONE', ( -43.08855886698587057, 12.00403861870638167, 11.60551830606185142 ) ) ; +#2106 = CARTESIAN_POINT ( 'NONE', ( 43.00000000000000000, 12.26125813606941328, 12.49999999999993783 ) ) ; +#2107 = CARTESIAN_POINT ( 'NONE', ( 39.93733163486432147, 16.79782431294331957, 7.556418717553624376 ) ) ; +#2108 = CARTESIAN_POINT ( 'NONE', ( -43.46764395096883504, 10.90298475857212246, -11.09020261033075805 ) ) ; +#2109 = ORIENTED_EDGE ( 'NONE', *, *, #2014, .T. ) ; +#2110 = AXIS2_PLACEMENT_3D ( 'NONE', #229, #1724, #2373 ) ; +#2111 = PRODUCT_DEFINITION ( 'UNKNOWN', '', #2235, #743 ) ; +#2112 = DIRECTION ( 'NONE', ( -0.000000000000000000, -0.000000000000000000, -1.000000000000000000 ) ) ; +#2113 = EDGE_LOOP ( 'NONE', ( #1533, #523, #2073, #2482 ) ) ; +#2114 = DIRECTION ( 'NONE', ( -0.000000000000000000, -0.000000000000000000, 1.000000000000000000 ) ) ; +#2115 = EDGE_CURVE ( 'NONE', #1788, #1800, #2440, .T. ) ; +#2116 = CARTESIAN_POINT ( 'NONE', ( -44.94552866371285660, 6.610463800732931716, 12.50000000000000000 ) ) ; +#2117 = CARTESIAN_POINT ( 'NONE', ( 1.750000000000000888, 65.00000000000000000, 4.500000000000000888 ) ) ; +#2118 = ORIENTED_EDGE ( 'NONE', *, *, #80, .F. ) ; +#2119 = FACE_OUTER_BOUND ( 'NONE', #2567, .T. ) ; +#2120 = LINE ( 'NONE', #449, #2232 ) ; +#2121 = CARTESIAN_POINT ( 'NONE', ( 43.00000000000000000, 12.26125813606941328, 12.50000000000002132 ) ) ; +#2122 = CARTESIAN_POINT ( 'NONE', ( 33.59905643722282775, 39.56632930884228472, 8.586160965562099179 ) ) ; +#2123 = CARTESIAN_POINT ( 'NONE', ( -38.42973826896736966, 21.97278139372983929, -17.93977322889649528 ) ) ; +#2124 = EDGE_LOOP ( 'NONE', ( #679, #1053, #2041, #165 ) ) ; +#2125 = CYLINDRICAL_SURFACE ( 'NONE', #1995, 4.000000000000001776 ) ; +#2126 = ORIENTED_EDGE ( 'NONE', *, *, #598, .F. ) ; +#2127 = FACE_OUTER_BOUND ( 'NONE', #1944, .T. ) ; +#2128 = CARTESIAN_POINT ( 'NONE', ( -33.54513916431535847, 33.99549709481389215, -8.669659710838189426 ) ) ; +#2129 = EDGE_CURVE ( 'NONE', #1614, #410, #2346, .T. ) ; +#2130 = ORIENTED_EDGE ( 'NONE', *, *, #1680, .T. ) ; +#2131 = PLANE ( 'NONE', #2333 ) ; +#2132 = CARTESIAN_POINT ( 'NONE', ( -43.29946974291465267, 11.39144729317233384, 11.12182360864387398 ) ) ; +#2133 = CARTESIAN_POINT ( 'NONE', ( 43.00000000000000000, 6.284924945759610360, 12.49999999999999112 ) ) ; +#2134 = CARTESIAN_POINT ( 'NONE', ( 39.29637667370440823, 23.01844414046957255, 6.000000000000002665 ) ) ; +#2135 = CARTESIAN_POINT ( 'NONE', ( -31.94552866371285660, 44.36900610829383851, 25.49999999999999645 ) ) ; +#2136 = ORIENTED_EDGE ( 'NONE', *, *, #917, .F. ) ; +#2137 = CARTESIAN_POINT ( 'NONE', ( -37.50000000000000000, 0.000000000000000000, -12.50000000000000000 ) ) ; +#2138 = EDGE_LOOP ( 'NONE', ( #1905, #562, #2608, #720, #1563, #974, #2522, #960, #2572, #1203 ) ) ; +#2139 = DIRECTION ( 'NONE', ( -1.000000000000000000, 0.000000000000000000, 0.000000000000000000 ) ) ; +#2140 = DIRECTION ( 'NONE', ( 0.000000000000000000, 0.000000000000000000, -1.000000000000000000 ) ) ; +#2141 = CARTESIAN_POINT ( 'NONE', ( -33.62350536456727212, 34.94245463026271636, -17.56719610498104700 ) ) ; +#2142 = ORIENTED_EDGE ( 'NONE', *, *, #1787, .F. ) ; +#2143 = ADVANCED_FACE ( 'NONE', ( #218 ), #1671, .F. ) ; +#2144 = CARTESIAN_POINT ( 'NONE', ( -42.87529148811361779, 12.62347441469825782, -7.713113091876421912 ) ) ; +#2145 = AXIS2_PLACEMENT_3D ( 'NONE', #1118, #466, #703 ) ; +#2146 = DIRECTION ( 'NONE', ( -1.000000000000000000, 0.000000000000000000, 0.000000000000000000 ) ) ; +#2147 = AXIS2_PLACEMENT_3D ( 'NONE', #2313, #1504, #1025 ) ; +#2148 = AXIS2_PLACEMENT_3D ( 'NONE', #1681, #2547, #1057 ) ; +#2149 = EDGE_CURVE ( 'NONE', #119, #1369, #293, .T. ) ; +#2150 = FACE_OUTER_BOUND ( 'NONE', #609, .T. ) ; +#2151 = CARTESIAN_POINT ( 'NONE', ( 0.000000000000000000, 24.99999999999999645, 20.50000000000000000 ) ) ; +#2152 = DIRECTION ( 'NONE', ( 0.000000000000000000, -0.000000000000000000, 1.000000000000000000 ) ) ; +#2153 = DIRECTION ( 'NONE', ( -1.000000000000000000, 0.000000000000000000, 0.000000000000000000 ) ) ; +#2154 = CARTESIAN_POINT ( 'NONE', ( 37.50000000000000000, 5.000000000000004441, -12.50000000000000000 ) ) ; +#2155 = VERTEX_POINT ( 'NONE', #2096 ) ; +#2156 = VECTOR ( 'NONE', #2253, 1000.000000000000000 ) ; +#2157 = CARTESIAN_POINT ( 'NONE', ( -32.08407190151646660, 34.85601975930839558, -16.54074713282725639 ) ) ; +#2158 = CARTESIAN_POINT ( 'NONE', ( -37.50000000000000000, 6.000000000000005329, 12.50000000000000000 ) ) ; +#2159 = CARTESIAN_POINT ( 'NONE', ( -33.69087072485709200, 33.99846891094080092, -16.46928847759323844 ) ) ; +#2160 = ORIENTED_EDGE ( 'NONE', *, *, #94, .F. ) ; +#2161 = CARTESIAN_POINT ( 'NONE', ( -43.89767380834007326, 9.653961638331107764, -8.950931874450899883 ) ) ; +#2162 = CYLINDRICAL_SURFACE ( 'NONE', #747, 5.499999999999994671 ) ; +#2163 = B_SPLINE_CURVE_WITH_KNOTS ( 'NONE', 3, + ( #2453, #531, #2245, #359, #1858, #1216, #2072, #152, #2709, #1093, #1732, #637, #2128, #853, #1702, #415, #2324, #2765, #2351, #867, #1530, #1716 ), + .UNSPECIFIED., .F., .F., + ( 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4 ), + ( 0.000000000000000000, 0.0007627592689956853248, 0.001144138903493522024, 0.001525518537991358940, 0.001906898172489198242, 0.002288277806987037109, 0.003051037075982718314, 0.003813796344978399085, 0.004576555613974079423, 0.005339314882969760194, 0.006102074151965440965 ), + .UNSPECIFIED. ) ; +#2164 = CARTESIAN_POINT ( 'NONE', ( 0.000000000000000000, 0.000000000000000000, 20.50000000000000000 ) ) ; +#2165 = LINE ( 'NONE', #244, #798 ) ; +#2166 = CARTESIAN_POINT ( 'NONE', ( -33.03257378525533738, 31.99619020741757680, -0.4999999999999995559 ) ) ; +#2167 = ADVANCED_FACE ( 'NONE', ( #2760 ), #1076, .F. ) ; +#2168 = PLANE ( 'NONE', #1534 ) ; +#2169 = CARTESIAN_POINT ( 'NONE', ( -30.24108867664220668, 33.09510371101609394, -11.01637359942223959 ) ) ; +#2170 = CARTESIAN_POINT ( 'NONE', ( -32.80462327031782621, 41.87376302754837099, 9.242520617631695856 ) ) ; +#2171 = CARTESIAN_POINT ( 'NONE', ( -33.20266196594004526, 33.90990497528945014, -15.94086684414193478 ) ) ; +#2172 = CARTESIAN_POINT ( 'NONE', ( 37.65733024778801763, 27.77905981872672569, 18.11655635681410459 ) ) ; +#2173 = ORIENTED_EDGE ( 'NONE', *, *, #1088, .F. ) ; +#2174 = CARTESIAN_POINT ( 'NONE', ( -42.34167783727841083, 14.17335700015280864, -9.275019158363502214 ) ) ; +#2175 = CARTESIAN_POINT ( 'NONE', ( -42.65021550190652277, 7.485593379376848766, 14.43847249979325120 ) ) ; +#2176 = CIRCLE ( 'NONE', #923, 32.50000000000000000 ) ; +#2177 = EDGE_LOOP ( 'NONE', ( #2483, #1866, #21, #61 ) ) ; +#2178 = CARTESIAN_POINT ( 'NONE', ( 43.00000000000000000, 6.284924945759425619, 12.58999354329103681 ) ) ; +#2179 = LINE ( 'NONE', #657, #2371 ) ; +#2180 = DIRECTION ( 'NONE', ( 0.000000000000000000, 0.000000000000000000, 1.000000000000000000 ) ) ; +#2181 = CARTESIAN_POINT ( 'NONE', ( -37.50000000000000000, 6.000000000000005329, 12.50000000000000000 ) ) ; +#2182 = ORIENTED_EDGE ( 'NONE', *, *, #2264, .T. ) ; +#2183 = EDGE_CURVE ( 'NONE', #1213, #839, #644, .T. ) ; +#2184 = DIRECTION ( 'NONE', ( 0.000000000000000000, 0.000000000000000000, -1.000000000000000000 ) ) ; +#2185 = CARTESIAN_POINT ( 'NONE', ( -34.45097498341976916, 37.09192911891105382, 7.302165524867300306 ) ) ; +#2186 = CARTESIAN_POINT ( 'NONE', ( -1.750000000000000888, 24.99999999999999645, 20.50000000000000000 ) ) ; +#2187 = CARTESIAN_POINT ( 'NONE', ( 44.53214698414766559, 7.811132234350878889, 14.79092204521036891 ) ) ; +#2188 = CARTESIAN_POINT ( 'NONE', ( -35.06775177350758810, 33.21237578291635373, -17.43362278359201767 ) ) ; +#2189 = CARTESIAN_POINT ( 'NONE', ( -33.54851438728952218, 39.71312885736417542, 16.79537387900164092 ) ) ; +#2190 = CARTESIAN_POINT ( 'NONE', ( -31.91191708823010487, 37.19759781552239986, -13.13251385117886549 ) ) ; +#2191 = AXIS2_PLACEMENT_3D ( 'NONE', #837, #1241, #2099 ) ; +#2192 = CARTESIAN_POINT ( 'NONE', ( -32.36304737523853703, 33.19390749586611378, -10.53192484173048094 ) ) ; +#2193 = CARTESIAN_POINT ( 'NONE', ( 28.36585991138574769, 54.76616564920129804, 20.50000000000000000 ) ) ; +#2194 = FACE_OUTER_BOUND ( 'NONE', #355, .T. ) ; +#2195 = CARTESIAN_POINT ( 'NONE', ( 32.00000000000000000, 44.04346725332046475, 12.50000000000000000 ) ) ; +#2196 = VECTOR ( 'NONE', #1953, 1000.000000000000114 ) ; +#2197 = VERTEX_POINT ( 'NONE', #411 ) ; +#2198 = CARTESIAN_POINT ( 'NONE', ( -34.67866013361472710, 34.51018141257993932, -18.05938415897110616 ) ) ; +#2199 = CARTESIAN_POINT ( 'NONE', ( -36.80118201742489248, 30.26574514010100714, 6.931169661504697821 ) ) ; +#2200 = CARTESIAN_POINT ( 'NONE', ( -30.24108867664220313, 33.09510371101608683, -13.98362640057776041 ) ) ; +#2201 = CARTESIAN_POINT ( 'NONE', ( 40.17685806913529234, 20.46108306199920435, 17.52236565250806777 ) ) ; +#2202 = EDGE_CURVE ( 'NONE', #410, #2404, #2176, .T. ) ; +#2203 = CIRCLE ( 'NONE', #319, 5.499999999999996447 ) ; +#2204 = CARTESIAN_POINT ( 'NONE', ( -34.39467578440337547, 33.83453276706526225, -17.04087496986395323 ) ) ; +#2205 = CARTESIAN_POINT ( 'NONE', ( -43.61372823025195800, 10.47868249396838536, 16.46493364688603833 ) ) ; +#2206 = CARTESIAN_POINT ( 'NONE', ( -32.02647746074757151, 32.37817243387397781, -11.95058920248304979 ) ) ; +#2207 = CARTESIAN_POINT ( 'NONE', ( -32.48921376111908188, 33.37121617934870699, -10.22975609381638229 ) ) ; +#2208 = FACE_OUTER_BOUND ( 'NONE', #672, .T. ) ; +#2209 = CARTESIAN_POINT ( 'NONE', ( 0.000000000000000000, 24.99999999999999645, 20.50000000000000000 ) ) ; +#2210 = DIRECTION ( 'NONE', ( -0.000000000000000000, 1.000000000000000000, -0.000000000000000000 ) ) ; +#2211 = VERTEX_POINT ( 'NONE', #193 ) ; +#2212 = CARTESIAN_POINT ( 'NONE', ( -37.50000000000000000, 5.000000000000004441, -9.749999999999998224 ) ) ; +#2213 = CARTESIAN_POINT ( 'NONE', ( -39.33771734142730736, 22.89837003650002956, 7.131934116793763323 ) ) ; +#2214 = CARTESIAN_POINT ( 'NONE', ( 43.54841234348915435, 10.66839269963269032, 11.16680329600797528 ) ) ; +#2215 = CARTESIAN_POINT ( 'NONE', ( -41.87309194091779574, 10.15314363899527805, 15.85494385505698389 ) ) ; +#2216 = EDGE_CURVE ( 'NONE', #373, #290, #1147, .T. ) ; +#2217 = AXIS2_PLACEMENT_3D ( 'NONE', #1777, #55, #2602 ) ; +#2218 = CARTESIAN_POINT ( 'NONE', ( -33.05944098404254561, 33.84561590497992967, -9.246554580333423701 ) ) ; +#2219 = CARTESIAN_POINT ( 'NONE', ( -35.31999555688394565, 32.64726791736439537, -17.54951290997401614 ) ) ; +#2220 = LINE ( 'NONE', #313, #2411 ) ; +#2221 = CARTESIAN_POINT ( 'NONE', ( 32.04197879035449859, 44.08886640157222558, 13.28475262339375895 ) ) ; +#2222 = EDGE_LOOP ( 'NONE', ( #2726, #399, #2562, #2173 ) ) ; +#2223 = DIRECTION ( 'NONE', ( -1.000000000000000000, 0.000000000000000000, 0.000000000000000000 ) ) ; +#2224 = DIRECTION ( 'NONE', ( 0.000000000000000000, 0.000000000000000000, -1.000000000000000000 ) ) ; +#2225 = CYLINDRICAL_SURFACE ( 'NONE', #1163, 2.750000000000002665 ) ; +#2226 = EDGE_CURVE ( 'NONE', #1956, #1002, #20, .T. ) ; +#2227 = CARTESIAN_POINT ( 'NONE', ( -31.83792765984055251, 37.04464140922890181, -13.30065058924384580 ) ) ; +#2228 = CARTESIAN_POINT ( 'NONE', ( -34.16219127776945186, 34.83175252575671976, -8.123775874914993977 ) ) ; +#2229 = CARTESIAN_POINT ( 'NONE', ( -45.50000000000000000, 5.000000000000000000, 4.500000000000003553 ) ) ; +#2230 = CARTESIAN_POINT ( 'NONE', ( -35.22977879528890810, 32.91002671737059160, -17.51004901566757965 ) ) ; +#2231 = ADVANCED_FACE ( 'NONE', ( #397, #877 ), #2306, .T. ) ; +#2232 = VECTOR ( 'NONE', #2518, 1000.000000000000114 ) ; +#2233 = CIRCLE ( 'NONE', #2145, 1.000000000000000888 ) ; +#2234 = CARTESIAN_POINT ( 'NONE', ( -36.01076853932008248, 30.27612420079759303, -17.84773735216146306 ) ) ; +#2235 = PRODUCT_DEFINITION_FORMATION_WITH_SPECIFIED_SOURCE ( 'ANY', '', #1775, .NOT_KNOWN. ) ; +#2236 = ORIENTED_EDGE ( 'NONE', *, *, #199, .T. ) ; +#2237 = UNCERTAINTY_MEASURE_WITH_UNIT (LENGTH_MEASURE( 1.000000000000000082E-05 ), #1835, 'distance_accuracy_value', 'NONE'); +#2238 = CIRCLE ( 'NONE', #2544, 4.999999999999999112 ) ; +#2239 = CARTESIAN_POINT ( 'NONE', ( -42.92726601009342602, 6.534591258039863071, 11.60396289541549208 ) ) ; +#2240 = CARTESIAN_POINT ( 'NONE', ( -35.56052505735149794, 33.86923731822577821, 0.7239554166110148126 ) ) ; +#2241 = DIRECTION ( 'NONE', ( -0.000000000000000000, -1.000000000000000000, -0.000000000000000000 ) ) ; +#2242 = VECTOR ( 'NONE', #1577, 1000.000000000000000 ) ; +#2243 = CARTESIAN_POINT ( 'NONE', ( -37.93723037723203362, 26.96608898181698777, -19.00220868657622120 ) ) ; +#2244 = CARTESIAN_POINT ( 'NONE', ( -32.68649813412481819, 33.58807897161884881, -9.829750986092030018 ) ) ; +#2245 = CARTESIAN_POINT ( 'NONE', ( -35.14038434858451865, 33.11359712655156073, -7.529260729552952114 ) ) ; +#2246 = LINE ( 'NONE', #995, #176 ) ; +#2247 = EDGE_CURVE ( 'NONE', #2746, #1000, #1922, .T. ) ; +#2248 = CARTESIAN_POINT ( 'NONE', ( -30.45505023850549620, 33.55159498885787883, -10.48396092735532115 ) ) ; +#2249 = ORIENTED_EDGE ( 'NONE', *, *, #2386, .F. ) ; +#2250 = CARTESIAN_POINT ( 'NONE', ( -40.85494385521242577, 13.64803341803770920, 8.126908059186071398 ) ) ; +#2251 = CARTESIAN_POINT ( 'NONE', ( -35.86915977639390718, 32.97280677233769808, -0.5000000000000004441 ) ) ; +#2252 = CARTESIAN_POINT ( 'NONE', ( 37.50000000000000000, 0.000000000000000000, -12.50000000000000000 ) ) ; +#2253 = DIRECTION ( 'NONE', ( -0.000000000000000000, -0.000000000000000000, -1.000000000000000000 ) ) ; +#2254 = CARTESIAN_POINT ( 'NONE', ( -35.86915977639392139, 32.97280677233769097, -6.532393833667017091 ) ) ; +#2255 = FACE_OUTER_BOUND ( 'NONE', #269, .T. ) ; +#2256 = CARTESIAN_POINT ( 'NONE', ( 43.67796458834995121, 10.29210778281894001, 12.80896965692306289 ) ) ; +#2257 = CARTESIAN_POINT ( 'NONE', ( -35.10281040004661435, 34.19759691359718090, -6.777322849519937797 ) ) ; +#2258 = CARTESIAN_POINT ( 'NONE', ( 35.17200529167838141, 34.99769424203288537, 18.17961152446044437 ) ) ; +#2259 = ORIENTED_EDGE ( 'NONE', *, *, #1424, .T. ) ; +#2260 = SURFACE_STYLE_FILL_AREA ( #1731 ) ; +#2261 = CARTESIAN_POINT ( 'NONE', ( -43.05645483273530516, 12.09728489066292312, 13.23782609026732793 ) ) ; +#2262 = ORIENTED_EDGE ( 'NONE', *, *, #196, .T. ) ; +#2263 = CARTESIAN_POINT ( 'NONE', ( -44.94552866371285660, 6.610463800732932604, -17.67565352282140623 ) ) ; +#2264 = EDGE_CURVE ( 'NONE', #1962, #1729, #797, .T. ) ; +#2265 = CARTESIAN_POINT ( 'NONE', ( -32.28090642499900298, 43.07922933215968442, 14.27218612157844824 ) ) ; +#2266 = ORIENTED_EDGE ( 'NONE', *, *, #1088, .T. ) ; +#2267 = CARTESIAN_POINT ( 'NONE', ( -42.97198885086694986, 6.381075869361561459, -11.93415139584733176 ) ) ; +#2268 = DIRECTION ( 'NONE', ( 0.000000000000000000, -0.000000000000000000, -1.000000000000000000 ) ) ; +#2269 = CARTESIAN_POINT ( 'NONE', ( -10.88337182448036522, 14.37644341801383874, -20.50000000000000000 ) ) ; +#2270 = CARTESIAN_POINT ( 'NONE', ( 43.57608948207057153, 10.58800436055510197, 12.02167594495914926 ) ) ; +#2271 = CARTESIAN_POINT ( 'NONE', ( -30.92286176549616528, 34.14536489278964382, -9.701579716680802434 ) ) ; +#2272 = CARTESIAN_POINT ( 'NONE', ( -37.06990144990430025, 26.64055012684498180, -18.00186888864244850 ) ) ; +#2273 = ORIENTED_EDGE ( 'NONE', *, *, #342, .T. ) ; +#2274 = CIRCLE ( 'NONE', #307, 1.000000000000000888 ) ; +#2275 =( NAMED_UNIT ( * ) SI_UNIT ( $, .STERADIAN. ) SOLID_ANGLE_UNIT ( ) ); +#2276 = CARTESIAN_POINT ( 'NONE', ( -42.65021550190652277, 7.485593379376942913, 10.56152750020676656 ) ) ; +#2277 = EDGE_LOOP ( 'NONE', ( #2038, #2581 ) ) ; +#2278 = EDGE_LOOP ( 'NONE', ( #2642, #326, #847, #1243, #878 ) ) ; +#2279 = CARTESIAN_POINT ( 'NONE', ( -35.25154046079260439, 34.76668408449911851, 1.942973882721104051 ) ) ; +#2280 = CARTESIAN_POINT ( 'NONE', ( -35.86915977639390718, 32.97280677233769808, -18.46760616633223506 ) ) ; +#2281 = EDGE_CURVE ( 'NONE', #988, #1933, #125, .T. ) ; +#2282 = ORIENTED_EDGE ( 'NONE', *, *, #2149, .F. ) ; +#2283 = DIRECTION ( 'NONE', ( 0.000000000000000000, 0.000000000000000000, -1.000000000000000000 ) ) ; +#2284 = CARTESIAN_POINT ( 'NONE', ( -33.13905957460556095, 34.99861909221774425, -17.28973884272261685 ) ) ; +#2285 = CARTESIAN_POINT ( 'NONE', ( 42.17307833103708958, 9.123411929629037687, 9.594017505116772426 ) ) ; +#2286 = CARTESIAN_POINT ( 'NONE', ( 36.06038663569744784, 30.10580538339059231, 7.143150278459511782 ) ) ; +#2287 = CARTESIAN_POINT ( 'NONE', ( -40.07226420255257437, 20.76487628786011896, -18.81591770358692273 ) ) ; +#2288 = ORIENTED_EDGE ( 'NONE', *, *, #898, .T. ) ; +#2289 = CARTESIAN_POINT ( 'NONE', ( -43.61372823025177325, 10.47868249396893781, 8.535066353114014959 ) ) ; +#2290 = ORIENTED_EDGE ( 'NONE', *, *, #598, .T. ) ; +#2291 = ORIENTED_EDGE ( 'NONE', *, *, #2437, .F. ) ; +#2292 = LINE ( 'NONE', #2539, #482 ) ; +#2293 = CARTESIAN_POINT ( 'NONE', ( -31.94552866371285660, 44.36900610829382430, -0.4999999999999935052 ) ) ; +#2294 = CARTESIAN_POINT ( 'NONE', ( 37.50000000000000000, 0.000000000000000000, 12.50000000000000000 ) ) ; +#2295 = ORIENTED_EDGE ( 'NONE', *, *, #1304, .F. ) ; +#2296 = ADVANCED_FACE ( 'NONE', ( #2728 ), #2574, .F. ) ; +#2297 = CARTESIAN_POINT ( 'NONE', ( -43.41506391757393857, 11.05570363667571776, -13.93184824265265398 ) ) ; +#2298 = CARTESIAN_POINT ( 'NONE', ( -32.98116575626914226, 34.99960826761601851, -17.19097729128900554 ) ) ; +#2299 = EDGE_CURVE ( 'NONE', #1677, #652, #909, .T. ) ; +#2300 = CARTESIAN_POINT ( 'NONE', ( 44.84138201281258063, 6.912958087210565594, 11.33622530713484622 ) ) ; +#2301 = CARTESIAN_POINT ( 'NONE', ( 34.11999303975470355, 36.76639026393851850, 8.101832367193273043 ) ) ; +#2302 = CARTESIAN_POINT ( 'NONE', ( -38.49829738907315857, 25.33646801997604214, -18.01526548192777355 ) ) ; +#2303 = ORIENTED_EDGE ( 'NONE', *, *, #2425, .F. ) ; +#2304 = AXIS2_PLACEMENT_3D ( 'NONE', #2137, #178, #7 ) ; +#2305 = CIRCLE ( 'NONE', #1457, 2.750000000000002665 ) ; +#2306 = PLANE ( 'NONE', #662 ) ; +#2307 = ORIENTED_EDGE ( 'NONE', *, *, #1938, .T. ) ; +#2308 = FACE_BOUND ( 'NONE', #1339, .T. ) ; +#2309 = DIRECTION ( 'NONE', ( 0.000000000000000000, 0.000000000000000000, -1.000000000000000000 ) ) ; +#2310 = CARTESIAN_POINT ( 'NONE', ( -37.50000000000000000, 5.000000000000004441, 15.25000000000000355 ) ) ; +#2311 = ORIENTED_EDGE ( 'NONE', *, *, #2532, .F. ) ; +#2312 = CARTESIAN_POINT ( 'NONE', ( -44.78057694612997608, 7.089566601275853586, -11.03879978481555391 ) ) ; +#2313 = CARTESIAN_POINT ( 'NONE', ( 0.000000000000000000, 65.00000000000000000, 20.50000000000000000 ) ) ; +#2314 =( BOUNDED_CURVE ( ) B_SPLINE_CURVE ( 3, ( #1131, #2623, #1740, #702 ), + .UNSPECIFIED., .F., .F. ) + B_SPLINE_CURVE_WITH_KNOTS ( ( 4, 4 ), + ( 1.570796326794896780, 1.978349873612872400 ), + .UNSPECIFIED. ) + CURVE ( ) GEOMETRIC_REPRESENTATION_ITEM ( ) RATIONAL_B_SPLINE_CURVE ( ( 1.000000000000000000, 0.9862061738295025970, 0.9862061738295025970, 1.000000000000000000 ) ) + REPRESENTATION_ITEM ( '' ) ); +#2315 = CARTESIAN_POINT ( 'NONE', ( 42.65021550190652277, 7.485593379376897616, 10.56152750020675057 ) ) ; +#2316 = CARTESIAN_POINT ( 'NONE', ( 41.64362746466552778, 10.94080219668967935, 8.865452871613511476 ) ) ; +#2317 = CARTESIAN_POINT ( 'NONE', ( -43.66413554073318437, 10.33227429663400798, -11.65534640261178012 ) ) ; +#2318 = EDGE_LOOP ( 'NONE', ( #2703, #1239 ) ) ; +#2319 = DIRECTION ( 'NONE', ( 0.000000000000000000, 0.000000000000000000, -1.000000000000000000 ) ) ; +#2320 = ORIENTED_EDGE ( 'NONE', *, *, #1867, .T. ) ; +#2321 = DIRECTION ( 'NONE', ( 0.000000000000000000, -1.000000000000000000, 0.000000000000000000 ) ) ; +#2322 = CARTESIAN_POINT ( 'NONE', ( -30.07837841308500160, 32.68977866257936427, -12.24089654967807839 ) ) ; +#2323 = AXIS2_PLACEMENT_3D ( 'NONE', #1254, #2114, #370 ) ; +#2324 = CARTESIAN_POINT ( 'NONE', ( -32.68661006668391877, 33.58832361165990932, -9.829381099390571919 ) ) ; +#2325 = VERTEX_POINT ( 'NONE', #2328 ) ; +#2326 = AXIS2_PLACEMENT_3D ( 'NONE', #2501, #1586, #2024 ) ; +#2327 = CARTESIAN_POINT ( 'NONE', ( -38.42973826897114265, 21.97278139373025851, -7.060226771103836896 ) ) ; +#2328 = CARTESIAN_POINT ( 'NONE', ( 17.22413793103449464, 5.000000000000000888, -0.5000000000000004441 ) ) ; +#2329 = CARTESIAN_POINT ( 'NONE', ( -4.000000000000000000, 24.99999999999999645, 9.500000000000001776 ) ) ; +#2330 = CARTESIAN_POINT ( 'NONE', ( 31.94552866371286370, 44.36900610829383851, 12.50000000000000000 ) ) ; +#2331 = CARTESIAN_POINT ( 'NONE', ( -44.59669480201735325, 7.623652887282098334, -14.60501732734054769 ) ) ; +#2332 = ORIENTED_EDGE ( 'NONE', *, *, #721, .T. ) ; +#2333 = AXIS2_PLACEMENT_3D ( 'NONE', #211, #2560, #640 ) ; +#2334 = ADVANCED_FACE ( 'NONE', ( #227 ), #2162, .F. ) ; +#2335 = DIRECTION ( 'NONE', ( 0.000000000000000000, 0.000000000000000000, -1.000000000000000000 ) ) ; +#2336 = ORIENTED_EDGE ( 'NONE', *, *, #1975, .T. ) ; +#2337 = CARTESIAN_POINT ( 'NONE', ( -37.50000000000000000, 75.00000000000001421, 12.50000000000000000 ) ) ; +#2338 = DIRECTION ( 'NONE', ( -1.000000000000000000, 0.000000000000000000, 0.000000000000000000 ) ) ; +#2339 = EDGE_LOOP ( 'NONE', ( #1466, #1450, #1488, #1299 ) ) ; +#2340 = CARTESIAN_POINT ( 'NONE', ( -37.06990144989914882, 26.64055012684494628, -6.998131111358390832 ) ) ; +#2341 = CARTESIAN_POINT ( 'NONE', ( -43.00000000000000000, 6.284924945759554404, 12.50000000000000000 ) ) ; +#2342 = CARTESIAN_POINT ( 'NONE', ( 43.00000000005575629, 12.26125813590289404, 12.30585011635568371 ) ) ; +#2343 = CARTESIAN_POINT ( 'NONE', ( 42.41046231078231443, 13.97357227301002958, 7.331800433583523180 ) ) ; +#2344 = CYLINDRICAL_SURFACE ( 'NONE', #1300, 5.000000000000000888 ) ; +#2345 = ORIENTED_EDGE ( 'NONE', *, *, #2129, .T. ) ; +#2346 = LINE ( 'NONE', #633, #2036 ) ; +#2347 = ORIENTED_EDGE ( 'NONE', *, *, #2299, .F. ) ; +#2348 = EDGE_CURVE ( 'NONE', #2559, #40, #2719, .T. ) ; +#2349 = AXIS2_PLACEMENT_3D ( 'NONE', #1685, #1033, #1699 ) ; +#2350 = FACE_OUTER_BOUND ( 'NONE', #1664, .T. ) ; +#2351 = CARTESIAN_POINT ( 'NONE', ( -32.39801739792145696, 33.25423752648580233, -10.43455839533363161 ) ) ; +#2352 = CARTESIAN_POINT ( 'NONE', ( -31.80633473863719374, 35.85147799646298239, -12.74769626147816481 ) ) ; +#2353 = EDGE_CURVE ( 'NONE', #2555, #887, #2370, .T. ) ; +#2354 = ORIENTED_EDGE ( 'NONE', *, *, #1201, .F. ) ; +#2355 = CARTESIAN_POINT ( 'NONE', ( -37.50000000000000000, 5.000000000000000000, -12.50000000000000000 ) ) ; +#2356 = CARTESIAN_POINT ( 'NONE', ( -37.50000000000000000, 25.16419609954000691, -17.99999999999999645 ) ) ; +#2357 = DIRECTION ( 'NONE', ( 0.000000000000000000, 0.000000000000000000, -1.000000000000000000 ) ) ; +#2358 = FACE_OUTER_BOUND ( 'NONE', #561, .T. ) ; +#2359 = CARTESIAN_POINT ( 'NONE', ( 43.77853523924351009, 10.00000000000000000, 4.500000000000003553 ) ) ; +#2360 = CARTESIAN_POINT ( 'NONE', ( -42.99649525893036639, 6.296955301573404107, -12.72668589585888377 ) ) ; +#2361 = CARTESIAN_POINT ( 'NONE', ( -28.36585991138575125, 54.76616564920128383, 20.50000000000000000 ) ) ; +#2362 = ORIENTED_EDGE ( 'NONE', *, *, #1981, .T. ) ; +#2363 = CARTESIAN_POINT ( 'NONE', ( -37.50000000000000000, 0.000000000000000000, 12.50000000000000000 ) ) ; +#2364 = CARTESIAN_POINT ( 'NONE', ( -33.96085114238744751, 33.97871654396673335, -16.71175975894927745 ) ) ; +#2365 = EDGE_LOOP ( 'NONE', ( #605, #2598, #366, #1411 ) ) ; +#2366 = CARTESIAN_POINT ( 'NONE', ( -41.08453677334700416, 17.82472731161974266, -6.535712854909187186 ) ) ; +#2367 = VECTOR ( 'NONE', #2475, 1000.000000000000114 ) ; +#2368 = CARTESIAN_POINT ( 'NONE', ( 43.77853523924351009, 10.00000000000000000, 4.500000000000003553 ) ) ; +#2369 = EDGE_CURVE ( 'NONE', #2102, #2735, #2120, .T. ) ; +#2370 = CIRCLE ( 'NONE', #712, 1.750000000000000888 ) ; +#2371 = VECTOR ( 'NONE', #1522, 1000.000000000000000 ) ; +#2372 = ORIENTED_EDGE ( 'NONE', *, *, #2592, .T. ) ; +#2373 = DIRECTION ( 'NONE', ( -1.000000000000000000, 0.000000000000000000, 0.000000000000000000 ) ) ; +#2374 = CYLINDRICAL_SURFACE ( 'NONE', #1694, 1.750000000000000888 ) ; +#2375 = CARTESIAN_POINT ( 'NONE', ( 0.000000000000000000, 5.000000000000000000, 20.50000000000000000 ) ) ; +#2376 = DIRECTION ( 'NONE', ( 0.000000000000000000, 0.000000000000000000, -1.000000000000000000 ) ) ; +#2377 = DIRECTION ( 'NONE', ( -1.000000000000000000, 0.000000000000000000, 0.000000000000000000 ) ) ; +#2378 = AXIS2_PLACEMENT_3D ( 'NONE', #1952, #1695, #830 ) ; +#2379 = DIRECTION ( 'NONE', ( -0.9455286637128582639, 0.3255388549733759795, 0.000000000000000000 ) ) ; +#2380 = CARTESIAN_POINT ( 'NONE', ( -9.209006928406457959, 19.08775981524249232, -0.4999999999999995559 ) ) ; +#2381 = CARTESIAN_POINT ( 'NONE', ( -32.36420686467011620, 33.19576849732460033, -14.47113390788103260 ) ) ; +#2382 = CARTESIAN_POINT ( 'NONE', ( 42.51245935571760981, 7.958454404285582484, 14.77104525622276476 ) ) ; +#2383 = ORIENTED_EDGE ( 'NONE', *, *, #1325, .T. ) ; +#2384 = CARTESIAN_POINT ( 'NONE', ( -37.93723037723144387, 26.96608898181869307, -5.997791313423071813 ) ) ; +#2385 = CARTESIAN_POINT ( 'NONE', ( -34.50846982257036899, 36.92493517148904658, 17.21047068398206292 ) ) ; +#2386 = EDGE_CURVE ( 'NONE', #1626, #1380, #117, .T. ) ; +#2387 = CARTESIAN_POINT ( 'NONE', ( 44.90380467601652015, 6.731651258784676628, 13.24295527983301035 ) ) ; +#2388 = CARTESIAN_POINT ( 'NONE', ( -37.50000000000000000, 5.000000000000000000, 16.99999999999999645 ) ) ; +#2389 = CARTESIAN_POINT ( 'NONE', ( -37.96348091317739915, 26.88984421473294617, -18.07624747191496439 ) ) ; +#2390 = DIRECTION ( 'NONE', ( 0.3348729792147799866, 0.9422632794457277416, 0.000000000000000000 ) ) ; +#2391 = EDGE_CURVE ( 'NONE', #699, #1250, #1202, .T. ) ; +#2392 = ORIENTED_EDGE ( 'NONE', *, *, #1390, .F. ) ; +#2393 = CARTESIAN_POINT ( 'NONE', ( -30.75531648230274939, 33.96568033141718246, -15.05013505484490821 ) ) ; +#2394 = CARTESIAN_POINT ( 'NONE', ( -32.03545348354654720, 43.92176981164326577, 11.78006058356860741 ) ) ; +#2395 = CARTESIAN_POINT ( 'NONE', ( 0.000000000000000000, 65.00000000000000000, 9.500000000000001776 ) ) ; +#2396 = CARTESIAN_POINT ( 'NONE', ( 43.51720173354249255, 10.75904401780113062, 13.24358781162051990 ) ) ; +#2397 = CARTESIAN_POINT ( 'NONE', ( -32.48587777297380796, 33.37418639456181069, -14.77129521455876926 ) ) ; +#2398 = CARTESIAN_POINT ( 'NONE', ( -43.47300727646558016, 10.88740696221078430, 11.07271280388263612 ) ) ; +#2399 = CARTESIAN_POINT ( 'NONE', ( -32.19621406304697331, 32.86985622852959210, -11.04015032658462481 ) ) ; +#2400 = LINE ( 'NONE', #1086, #850 ) ; +#2401 = DIRECTION ( 'NONE', ( -0.000000000000000000, -1.000000000000000000, -0.000000000000000000 ) ) ; +#2402 = CARTESIAN_POINT ( 'NONE', ( -44.92483465240206897, 6.670569623932271597, -13.03529124250512261 ) ) ; +#2403 = EDGE_CURVE ( 'NONE', #1656, #1642, #2561, .T. ) ; +#2404 = VERTEX_POINT ( 'NONE', #2531 ) ; +#2405 = DIRECTION ( 'NONE', ( -0.3255388549733759240, -0.9455286637128581528, 0.000000000000000000 ) ) ; +#2406 = CARTESIAN_POINT ( 'NONE', ( 37.50000000000000000, 75.00000000000001421, 15.25000000000000355 ) ) ; +#2407 = CARTESIAN_POINT ( 'NONE', ( -44.94552866371285660, 6.610463800732931716, -12.50000000000000000 ) ) ; +#2408 = CARTESIAN_POINT ( 'NONE', ( 36.06038663570628700, 30.10580538338117407, 17.85684972154414751 ) ) ; +#2409 = CARTESIAN_POINT ( 'NONE', ( -32.14518621856249325, 32.72879920981659296, -13.75537618510426086 ) ) ; +#2410 = CARTESIAN_POINT ( 'NONE', ( -36.74416741500050421, 30.43134423835567404, 18.83082239818915582 ) ) ; +#2411 = VECTOR ( 'NONE', #1366, 1000.000000000000000 ) ; +#2412 = CARTESIAN_POINT ( 'NONE', ( -31.71128054985143763, 36.78571494027813316, -13.43558096349155662 ) ) ; +#2413 = AXIS2_PLACEMENT_3D ( 'NONE', #182, #1890, #2737 ) ; +#2414 = CARTESIAN_POINT ( 'NONE', ( -33.68994425456530450, 34.00744475573307568, -8.526107425713719934 ) ) ; +#2415 = DIRECTION ( 'NONE', ( 0.000000000000000000, 0.000000000000000000, -1.000000000000000000 ) ) ; +#2416 = DIRECTION ( 'NONE', ( 0.000000000000000000, 0.000000000000000000, -1.000000000000000000 ) ) ; +#2417 = CARTESIAN_POINT ( 'NONE', ( 32.60311442061276921, 42.45904613731271837, 15.38048284069856386 ) ) ; +#2418 = VECTOR ( 'NONE', #48, 1000.000000000000000 ) ; +#2419 = EDGE_LOOP ( 'NONE', ( #1929, #1003, #864, #1812, #2311 ) ) ; +#2420 = ADVANCED_FACE ( 'NONE', ( #1302 ), #1149, .T. ) ; +#2421 = PLANE ( 'NONE', #348 ) ; +#2422 = CARTESIAN_POINT ( 'NONE', ( -37.65733024778801763, 27.77905981872669727, 6.883443643188033256 ) ) ; +#2423 = DIRECTION ( 'NONE', ( -1.000000000000000000, 0.000000000000000000, 0.000000000000000000 ) ) ; +#2424 = CARTESIAN_POINT ( 'NONE', ( 42.27964029246761157, 14.35354525096313694, 15.78330155396011669 ) ) ; +#2425 = EDGE_CURVE ( 'NONE', #1869, #1271, #1789, .T. ) ; +#2426 = AXIS2_PLACEMENT_3D ( 'NONE', #245, #689, #2597 ) ; +#2427 = CARTESIAN_POINT ( 'NONE', ( -32.80223149720249864, 33.68595592459292476, -15.37014069878409472 ) ) ; +#2428 = CARTESIAN_POINT ( 'NONE', ( -43.67474508509441478, 10.30145884050160277, 11.70830923837313797 ) ) ; +#2429 = CARTESIAN_POINT ( 'NONE', ( -32.14518621856249325, 32.72879920981659296, -11.24462381489573914 ) ) ; +#2430 = VECTOR ( 'NONE', #1393, 1000.000000000000114 ) ; +#2431 = CARTESIAN_POINT ( 'NONE', ( -32.25660262397823885, 33.00377268879510950, -10.83624211763857303 ) ) ; +#2432 = CARTESIAN_POINT ( 'NONE', ( 44.94552866371285660, 6.610463800732987671, -0.4999999999999935052 ) ) ; +#2433 = DIRECTION ( 'NONE', ( -1.000000000000000000, 0.000000000000000000, 0.000000000000000000 ) ) ; +#2434 = CARTESIAN_POINT ( 'NONE', ( -37.50000000000000000, 5.000000000000004441, 12.50000000000000000 ) ) ; +#2435 = EDGE_LOOP ( 'NONE', ( #1672, #2676, #1253, #1899, #1670 ) ) ; +#2436 = CARTESIAN_POINT ( 'NONE', ( -32.85740444909299640, 41.72045992200722253, 9.514080636735620544 ) ) ; +#2437 = EDGE_CURVE ( 'NONE', #219, #2551, #1526, .T. ) ; +#2438 = CARTESIAN_POINT ( 'NONE', ( -32.10231590476908536, 32.60009903557990185, -13.57251263405132136 ) ) ; +#2439 = CARTESIAN_POINT ( 'NONE', ( -43.96825760039310893, 9.448950784603200148, 15.93434294849810762 ) ) ; +#2440 = CIRCLE ( 'NONE', #2304, 2.750000000000002665 ) ; +#2441 = CARTESIAN_POINT ( 'NONE', ( -35.31999555688393855, 32.64726791736441669, -17.54951290997401259 ) ) ; +#2442 = CARTESIAN_POINT ( 'NONE', ( -34.79718267054763459, 33.54393479310802917, -7.708834455968716526 ) ) ; +#2443 = LINE ( 'NONE', #2229, #752 ) ; +#2444 = CYLINDRICAL_SURFACE ( 'NONE', #1290, 5.499999999999996447 ) ; +#2445 = ORIENTED_EDGE ( 'NONE', *, *, #1270, .F. ) ; +#2446 = APPLICATION_PROTOCOL_DEFINITION ( 'draft international standard', 'automotive_design', 1998, #1056 ) ; +#2447 = CARTESIAN_POINT ( 'NONE', ( -32.33154110754892230, 43.24783170891587503, 10.57274774848070109 ) ) ; +#2448 = DIRECTION ( 'NONE', ( 0.000000000000000000, 0.000000000000000000, -1.000000000000000000 ) ) ; +#2449 = CARTESIAN_POINT ( 'NONE', ( -32.00000000000000000, 44.04346725331308221, 12.85997824090613406 ) ) ; +#2450 = ADVANCED_FACE ( 'NONE', ( #2680 ), #1386, .F. ) ; +#2451 = CARTESIAN_POINT ( 'NONE', ( -32.06738264253668547, 32.49761593359419010, -11.63563047650472981 ) ) ; +#2452 = CARTESIAN_POINT ( 'NONE', ( -32.28992956916303569, 33.06853971673057657, -10.73456288603651565 ) ) ; +#2453 = CARTESIAN_POINT ( 'NONE', ( -35.31999555688396697, 32.64726791736432432, -7.450487090025976755 ) ) ; +#2454 = CARTESIAN_POINT ( 'NONE', ( -35.03661225317585348, 33.25975357281244982, -17.41827260215351458 ) ) ; +#2455 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION ( '', ( #221 ), #88 ) ; +#2456 = AXIS2_PLACEMENT_3D ( 'NONE', #1960, #38, #899 ) ; +#2457 = CARTESIAN_POINT ( 'NONE', ( -32.95306044124963307, 35.01023595654707066, -7.820292378271018308 ) ) ; +#2458 = ORIENTED_EDGE ( 'NONE', *, *, #504, .F. ) ; +#2459 = VECTOR ( 'NONE', #1575, 1000.000000000000000 ) ; +#2460 = CARTESIAN_POINT ( 'NONE', ( -43.29946974291550532, 11.39144729316937088, 13.87817639135741921 ) ) ; +#2461 = LINE ( 'NONE', #2679, #1370 ) ; +#2462 = CARTESIAN_POINT ( 'NONE', ( -32.00000000000147793, 44.21079393475268660, 12.89178716040438744 ) ) ; +#2463 = CARTESIAN_POINT ( 'NONE', ( -35.59821368629273763, 33.57263803759811793, -7.309878905903493873 ) ) ; +#2464 = CARTESIAN_POINT ( 'NONE', ( -43.00000000000000000, 6.284924945759544634, 12.50000000000000000 ) ) ; +#2465 = CARTESIAN_POINT ( 'NONE', ( 43.01186382226871530, 12.22679962567669243, 12.88659521195030777 ) ) ; +#2466 = CARTESIAN_POINT ( 'NONE', ( 34.27817459305202163, 36.22341709370546425, 7.000000000000002665 ) ) ; +#2467 = EDGE_CURVE ( 'NONE', #1626, #1698, #1632, .T. ) ; +#2468 = CARTESIAN_POINT ( 'NONE', ( 34.11999303975556330, 36.76639026393175413, 16.89816763280757428 ) ) ; +#2469 = VERTEX_POINT ( 'NONE', #1200 ) ; +#2470 = CARTESIAN_POINT ( 'NONE', ( -44.93248048743234335, 6.648362271204027785, 12.07483222645047505 ) ) ; +#2471 = ORIENTED_EDGE ( 'NONE', *, *, #2281, .F. ) ; +#2472 = CARTESIAN_POINT ( 'NONE', ( -31.94552866371286370, 44.36900610829383851, 12.50000000000000000 ) ) ; +#2473 = FACE_OUTER_BOUND ( 'NONE', #238, .T. ) ; +#2474 = CARTESIAN_POINT ( 'NONE', ( -35.03662682140280538, 33.25975546703224239, -7.581717401315367866 ) ) ; +#2475 = DIRECTION ( 'NONE', ( 0.3255388549733759240, 0.9455286637128581528, 0.000000000000000000 ) ) ; +#2476 = VECTOR ( 'NONE', #1371, 1000.000000000000000 ) ; +#2477 = CARTESIAN_POINT ( 'NONE', ( 42.71092435547753752, 7.277204487012656209, 10.73119737958446507 ) ) ; +#2478 = LINE ( 'NONE', #1172, #2430 ) ; +#2479 = CARTESIAN_POINT ( 'NONE', ( -41.56879248528904469, 16.41820502030883944, -18.22558364296315503 ) ) ; +#2480 = VERTEX_POINT ( 'NONE', #990 ) ; +#2481 = CARTESIAN_POINT ( 'NONE', ( -41.26442097287522159, 17.30225306865531465, 8.207638216925946750 ) ) ; +#2482 = ORIENTED_EDGE ( 'NONE', *, *, #1975, .F. ) ; +#2483 = ORIENTED_EDGE ( 'NONE', *, *, #1514, .F. ) ; +#2484 = CARTESIAN_POINT ( 'NONE', ( 37.50000000000000000, 75.00000000000001421, -15.25000000000000355 ) ) ; +#2485 = DIRECTION ( 'NONE', ( 0.000000000000000000, -0.000000000000000000, 1.000000000000000000 ) ) ; +#2486 = EDGE_LOOP ( 'NONE', ( #1077, #1718 ) ) ; +#2487 = CARTESIAN_POINT ( 'NONE', ( -37.50000000000000000, 6.000000000000005329, 12.50000000000000000 ) ) ; +#2488 = CARTESIAN_POINT ( 'NONE', ( -32.80035353576547408, 33.68410357598781246, -15.36662494479539021 ) ) ; +#2489 = CARTESIAN_POINT ( 'NONE', ( 43.00000000000000000, 6.284924945759425619, 12.41000645670904490 ) ) ; +#2490 = CARTESIAN_POINT ( 'NONE', ( 35.24008933273407251, 34.79994392318622687, 7.395706311575591663 ) ) ; +#2491 = CARTESIAN_POINT ( 'NONE', ( -43.68618486729789652, 10.26823195585393123, -12.07740465410201658 ) ) ; +#2492 = ORIENTED_EDGE ( 'NONE', *, *, #2091, .F. ) ; +#2493 = AXIS2_PLACEMENT_3D ( 'NONE', #2375, #2152, #273 ) ; +#2494 = CARTESIAN_POINT ( 'NONE', ( -42.26572163226823164, 8.805405019716966208, 9.748583515298200552 ) ) ; +#2495 = EDGE_LOOP ( 'NONE', ( #787, #27 ) ) ; +#2496 = VECTOR ( 'NONE', #920, 1000.000000000000000 ) ; +#2497 = EDGE_LOOP ( 'NONE', ( #1901, #1913, #1075, #1452 ) ) ; +#2498 = DIRECTION ( 'NONE', ( 0.000000000000000000, 0.000000000000000000, 1.000000000000000000 ) ) ; +#2499 = ADVANCED_FACE ( 'NONE', ( #1857 ), #2225, .F. ) ; +#2500 = CARTESIAN_POINT ( 'NONE', ( 37.50000000000000000, 5.000000000000004441, 9.749999999999998224 ) ) ; +#2501 = CARTESIAN_POINT ( 'NONE', ( 37.50000000000000000, 75.00000000000001421, 12.50000000000000000 ) ) ; +#2502 = ADVANCED_FACE ( 'NONE', ( #2657 ), #331, .F. ) ; +#2503 = ORIENTED_EDGE ( 'NONE', *, *, #1304, .T. ) ; +#2504 = CARTESIAN_POINT ( 'NONE', ( -43.13581435095088779, 11.86678491173349137, -13.57447109993831980 ) ) ; +#2505 = CARTESIAN_POINT ( 'NONE', ( -30.85352967496542220, 34.06144666639386998, -15.18679774478694888 ) ) ; +#2506 = VECTOR ( 'NONE', #1643, 1000.000000000000000 ) ; +#2507 = CARTESIAN_POINT ( 'NONE', ( 43.61372823025153167, 10.47868249396968743, 8.535066353113965221 ) ) ; +#2508 = CARTESIAN_POINT ( 'NONE', ( 32.04197879035282170, 44.08886640158401349, 11.71524737660156035 ) ) ; +#2509 = CARTESIAN_POINT ( 'NONE', ( -39.54431025431523494, 22.29832024870347595, -18.92882290687671443 ) ) ; +#2510 = ORIENTED_EDGE ( 'NONE', *, *, #544, .F. ) ; +#2511 = CARTESIAN_POINT ( 'NONE', ( -42.91187591077667918, 6.587419232237300193, 11.51526756757560932 ) ) ; +#2512 = VERTEX_POINT ( 'NONE', #2280 ) ; +#2513 = CARTESIAN_POINT ( 'NONE', ( 4.000000000000001776, 65.00000000000000000, 9.500000000000001776 ) ) ; +#2514 = LINE ( 'NONE', #385, #1293 ) ; +#2515 = CARTESIAN_POINT ( 'NONE', ( 31.94552866371285660, 44.36900610829383851, -0.4999999999999935052 ) ) ; +#2516 = ORIENTED_EDGE ( 'NONE', *, *, #1711, .T. ) ; +#2517 = DIRECTION ( 'NONE', ( -0.000000000000000000, -1.000000000000000000, -0.000000000000000000 ) ) ; +#2518 = DIRECTION ( 'NONE', ( -0.3255388549733759240, -0.9455286637128581528, -0.000000000000000000 ) ) ; +#2519 = CARTESIAN_POINT ( 'NONE', ( 42.81541933757674201, 6.918515559511324575, 11.07567117061645057 ) ) ; +#2520 = CARTESIAN_POINT ( 'NONE', ( 41.87309194091779574, 10.15314363899672934, 9.145056144943021437 ) ) ; +#2521 = CARTESIAN_POINT ( 'NONE', ( -44.55199895893468920, 7.753472108975101307, -14.73135907980154258 ) ) ; +#2522 = ORIENTED_EDGE ( 'NONE', *, *, #2369, .F. ) ; +#2523 = AXIS2_PLACEMENT_3D ( 'NONE', #2542, #1931, #1487 ) ; +#2524 = CARTESIAN_POINT ( 'NONE', ( -44.94291777066060689, 6.618047148100145272, 12.28728800729306769 ) ) ; +#2525 = EDGE_LOOP ( 'NONE', ( #241, #1512, #2273, #536 ) ) ; +#2526 = CARTESIAN_POINT ( 'NONE', ( 17.22413793103449464, 15.00000000000000000, 4.500000000000000888 ) ) ; +#2527 = CARTESIAN_POINT ( 'NONE', ( 44.94552866371285660, 6.610463800732987671, 25.49999999999999645 ) ) ; +#2528 = LINE ( 'NONE', #2752, #157 ) ; +#2529 = ORIENTED_EDGE ( 'NONE', *, *, #1221, .T. ) ; +#2530 = CARTESIAN_POINT ( 'NONE', ( -39.73300686199834786, 17.49918845664574363, -7.453295492615387374 ) ) ; +#2531 = CARTESIAN_POINT ( 'NONE', ( -30.24108867664219957, 33.09510371101609394, -20.50000000000000000 ) ) ; +#2532 = EDGE_CURVE ( 'NONE', #1041, #1174, #1824, .T. ) ; +#2533 = CARTESIAN_POINT ( 'NONE', ( 45.50000000000002132, 5.000000000000000000, -20.50000000000000000 ) ) ; +#2534 = CARTESIAN_POINT ( 'NONE', ( 43.08988301296579237, 12.00019263240714196, 10.51163916010018085 ) ) ; +#2535 = CARTESIAN_POINT ( 'NONE', ( -41.04433338031060430, 17.94149819751710950, -16.97182048182517633 ) ) ; +#2536 = ORIENTED_EDGE ( 'NONE', *, *, #1593, .T. ) ; +#2537 = DIRECTION ( 'NONE', ( 0.000000000000000000, 0.000000000000000000, -1.000000000000000000 ) ) ; +#2538 = ORIENTED_EDGE ( 'NONE', *, *, #2353, .T. ) ; +#2539 = CARTESIAN_POINT ( 'NONE', ( -45.50000000000000000, 5.000000000000000000, 0.000000000000000000 ) ) ; +#2540 =( GEOMETRIC_REPRESENTATION_CONTEXT ( 3 ) GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT ( ( #1175 ) ) GLOBAL_UNIT_ASSIGNED_CONTEXT ( ( #82, #1790, #470 ) ) REPRESENTATION_CONTEXT ( 'NONE', 'WORKASPACE' ) ); +#2541 = CARTESIAN_POINT ( 'NONE', ( -30.07852830399136934, 32.69014495678720067, -12.76246157593145725 ) ) ; +#2542 = CARTESIAN_POINT ( 'NONE', ( -33.03257378525533738, 31.99619020741757680, -0.4999999999999995559 ) ) ; +#2543 = VERTEX_POINT ( 'NONE', #2500 ) ; +#2544 = AXIS2_PLACEMENT_3D ( 'NONE', #1540, #1321, #1351 ) ; +#2545 = CARTESIAN_POINT ( 'NONE', ( -43.66728881047318112, 10.32311561441032843, -12.59462259923101435 ) ) ; +#2546 = CARTESIAN_POINT ( 'NONE', ( 44.78694594894730585, 7.071067811865475505, 4.500000000000001776 ) ) ; +#2547 = DIRECTION ( 'NONE', ( 0.000000000000000000, 0.000000000000000000, 1.000000000000000000 ) ) ; +#2548 = ADVANCED_FACE ( 'NONE', ( #1425 ), #357, .F. ) ; +#2549 = CARTESIAN_POINT ( 'NONE', ( 36.78005168384700596, 27.63548691358245080, 7.000000000000002665 ) ) ; +#2550 = CARTESIAN_POINT ( 'NONE', ( -43.01892871247724770, 12.20627962907637354, -12.01430770672717863 ) ) ; +#2551 = VERTEX_POINT ( 'NONE', #99 ) ; +#2552 = VECTOR ( 'NONE', #2153, 1000.000000000000000 ) ; +#2553 = EDGE_CURVE ( 'NONE', #603, #758, #301, .T. ) ; +#2554 = CARTESIAN_POINT ( 'NONE', ( 0.000000000000000000, 45.00000000000000000, -20.50000000000000000 ) ) ; +#2555 = VERTEX_POINT ( 'NONE', #735 ) ; +#2556 = DIRECTION ( 'NONE', ( -1.000000000000000000, 0.000000000000000000, -0.000000000000000000 ) ) ; +#2557 = DIRECTION ( 'NONE', ( -0.000000000000000000, -1.000000000000000000, -0.000000000000000000 ) ) ; +#2558 = CARTESIAN_POINT ( 'NONE', ( -32.12243782233524314, 35.39872147352874521, -13.96340192189375884 ) ) ; +#2559 = VERTEX_POINT ( 'NONE', #1063 ) ; +#2560 = DIRECTION ( 'NONE', ( 0.000000000000000000, 0.000000000000000000, -1.000000000000000000 ) ) ; +#2561 = LINE ( 'NONE', #212, #1027 ) ; +#2562 = ORIENTED_EDGE ( 'NONE', *, *, #1610, .F. ) ; +#2563 = CARTESIAN_POINT ( 'NONE', ( 42.95367559951915126, 6.443937839889398944, 13.21799811442444117 ) ) ; +#2564 = CARTESIAN_POINT ( 'NONE', ( -45.50000000000000000, 0.000000000000000000, -0.000000000000000000 ) ) ; +#2565 = CARTESIAN_POINT ( 'NONE', ( -42.99999999999999289, 6.284924945759550852, 9.278174593052025187 ) ) ; +#2566 = DIRECTION ( 'NONE', ( -0.000000000000000000, -1.000000000000000000, -0.000000000000000000 ) ) ; +#2567 = EDGE_LOOP ( 'NONE', ( #352, #1713 ) ) ; +#2568 = CIRCLE ( 'NONE', #1188, 4.000000000000000000 ) ; +#2569 = CARTESIAN_POINT ( 'NONE', ( -30.10493428705314045, 32.75481996492078451, -13.14886959080084772 ) ) ; +#2570 = FACE_OUTER_BOUND ( 'NONE', #2050, .T. ) ; +#2571 = CARTESIAN_POINT ( 'NONE', ( -34.12734107192669342, 34.79531642946736980, -17.81961929576890924 ) ) ; +#2572 = ORIENTED_EDGE ( 'NONE', *, *, #1787, .T. ) ; +#2573 = CARTESIAN_POINT ( 'NONE', ( -43.55993684666466947, 10.63491974265470930, -11.92960100951705371 ) ) ; +#2574 = PLANE ( 'NONE', #661 ) ; +#2575 = ORIENTED_EDGE ( 'NONE', *, *, #2115, .F. ) ; +#2576 = CARTESIAN_POINT ( 'NONE', ( 44.77913493337640460, 7.093754932011568037, 13.97671189358406707 ) ) ; +#2577 = CARTESIAN_POINT ( 'NONE', ( -45.50000000000000000, 5.000000000000000000, -20.50000000000000000 ) ) ; +#2578 = DIRECTION ( 'NONE', ( 0.000000000000000000, 0.000000000000000000, 1.000000000000000000 ) ) ; +#2579 = CARTESIAN_POINT ( 'NONE', ( -37.50000000000000000, 6.000000000000005329, 12.50000000000000000 ) ) ; +#2580 = DIRECTION ( 'NONE', ( -0.000000000000000000, -0.000000000000000000, 1.000000000000000000 ) ) ; +#2581 = ORIENTED_EDGE ( 'NONE', *, *, #2353, .F. ) ; +#2582 = CARTESIAN_POINT ( 'NONE', ( -32.96180855177377111, 34.99942511581703997, -17.17851078735381876 ) ) ; +#2583 = DIRECTION ( 'NONE', ( -1.000000000000000000, 0.000000000000000000, 0.000000000000000000 ) ) ; +#2584 = ADVANCED_FACE ( 'NONE', ( #1441 ), #1914, .F. ) ; +#2585 = CARTESIAN_POINT ( 'NONE', ( -32.49066575616762265, 33.37302784643443943, -14.77344424567526637 ) ) ; +#2586 = CARTESIAN_POINT ( 'NONE', ( 32.72692620558952825, 41.54822417257454958, 15.25632870815823061 ) ) ; +#2587 = VERTEX_POINT ( 'NONE', #1930 ) ; +#2588 = AXIS2_PLACEMENT_3D ( 'NONE', #2764, #592, #852 ) ; +#2589 = CARTESIAN_POINT ( 'NONE', ( -40.06395933689159250, 20.78899779720964602, -7.460982371409011549 ) ) ; +#2590 = TOROIDAL_SURFACE ( 'NONE', #1874, 5.000000000000000000, 5.000000000000000000 ) ; +#2591 = CARTESIAN_POINT ( 'NONE', ( -35.17200529167902801, 34.99769424203096690, 18.17961152445757023 ) ) ; +#2592 = EDGE_CURVE ( 'NONE', #1041, #2664, #1429, .T. ) ; +#2593 = VECTOR ( 'NONE', #287, 1000.000000000000000 ) ; +#2594 = ORIENTED_EDGE ( 'NONE', *, *, #1221, .F. ) ; +#2595 = CARTESIAN_POINT ( 'NONE', ( 43.16529390050471449, 11.78116146411336373, 11.35073131986692196 ) ) ; +#2596 = LINE ( 'NONE', #311, #91 ) ; +#2597 = DIRECTION ( 'NONE', ( 0.000000000000000000, 0.000000000000000000, -1.000000000000000000 ) ) ; +#2598 = ORIENTED_EDGE ( 'NONE', *, *, #935, .T. ) ; +#2599 = CIRCLE ( 'NONE', #500, 1.000000000000002665 ) ; +#2600 = DIRECTION ( 'NONE', ( -1.000000000000000000, 0.000000000000000000, 0.000000000000000000 ) ) ; +#2601 =( BOUNDED_SURFACE ( ) B_SPLINE_SURFACE ( 3, 2, ( + ( #1181, #346, #763 ), + ( #2662, #124, #2650 ), + ( #2230, #324, #2025 ), + ( #740, #1598, #555 ), + ( #2454, #533, #1389 ), + ( #981, #1833, #1414 ), + ( #2698, #252, #362 ), + ( #171, #650, #2571 ), + ( #1515, #1717, #1284 ), + ( #1652, #1635, #2141 ), + ( #2364, #1946, #1313 ), + ( #26, #1110, #2284 ), + ( #2159, #1861, #2298 ), + ( #2089, #1026, #2712 ), + ( #445, #1879, #237 ), + ( #2171, #882, #1232 ), + ( #1703, #779, #155 ), + ( #2488, #568, #868 ), + ( #1298, #2729, #638 ), + ( #1733, #1501, #1094 ), + ( #2585, #2558, #2505 ), + ( #1080, #666, #1531 ), + ( #2381, #795, #584 ), + ( #459, #1432, #1220 ), + ( #814, #2352, #2075 ), + ( #1010, #1446, #375 ), + ( #430, #224, #1932 ), + ( #11, #682, #2200 ) ), + .UNSPECIFIED., .F., .F., .T. ) + B_SPLINE_SURFACE_WITH_KNOTS ( ( 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4 ), + ( 3, 3 ), + ( 0.008757071320785850960, 0.009183922389969279704, 0.009610773459152708448, 0.01046447559751956420, 0.01089132666670299121, 0.01131817773588641995, 0.01174502880506984870, 0.01217187987425327744, 0.01302558201262013493, 0.01387928415098699068, 0.01430613522017041769, 0.01473298628935384644, 0.01515983735853727518, 0.01558668842772070393 ), + ( 0.000000000000000000, 1.000000000000000000 ), + .UNSPECIFIED. ) + GEOMETRIC_REPRESENTATION_ITEM ( ) RATIONAL_B_SPLINE_SURFACE ( ( + ( 1.000000000000000000, 0.8290880361187440428, 1.000000000000000000), + ( 1.000000000000000000, 0.8283414753042251943, 1.000000000000000000), + ( 1.000000000000000000, 0.8272488154433742524, 1.000000000000000000), + ( 1.000000000000000000, 0.8237641646937760020, 1.000000000000000000), + ( 1.000000000000000000, 0.8213289271647844503, 1.000000000000000000), + ( 1.000000000000000000, 0.8113567961825397523, 1.000000000000000000), + ( 1.000000000000000000, 0.8007958503489036595, 1.000000000000000000), + ( 1.000000000000000000, 0.7781053080360526009, 1.000000000000000000), + ( 1.000000000000000000, 0.7693130770049906308, 1.000000000000000000), + ( 1.000000000000000000, 0.7498607328506173841, 1.000000000000000000), + ( 1.000000000000000000, 0.7391817961567436202, 1.000000000000000000), + ( 1.000000000000000000, 0.7159459271895894927, 1.000000000000000000), + ( 1.000000000000000000, 0.7033057285803756553, 1.000000000000000000), + ( 1.000000000000000000, 0.6765659509163293173, 1.000000000000000000), + ( 1.000000000000000000, 0.6625482921293183169, 1.000000000000000000), + ( 1.000000000000000000, 0.6186898459787799620, 1.000000000000000000), + ( 1.000000000000000000, 0.5869418376578605656, 1.000000000000000000), + ( 1.000000000000000000, 0.5195157893409696470, 1.000000000000000000), + ( 1.000000000000000000, 0.4845337398371500903, 1.000000000000000000), + ( 1.000000000000000000, 0.4302931466504548164, 1.000000000000000000), + ( 1.000000000000000000, 0.4119160469453999052, 1.000000000000000000), + ( 1.000000000000000000, 0.3745556284437132066, 1.000000000000000000), + ( 1.000000000000000000, 0.3555730519643583998, 1.000000000000000000), + ( 1.000000000000000000, 0.3169518206573033181, 1.000000000000000000), + ( 1.000000000000000000, 0.2972931862310035922, 1.000000000000000000), + ( 1.000000000000000000, 0.2575326329851665430, 1.000000000000000000), + ( 1.000000000000000000, 0.2373943807889200286, 1.000000000000000000), + ( 1.000000000000000000, 0.2168728904164849147, 1.000000000000000000) ) ) + REPRESENTATION_ITEM ( '' ) SURFACE ( ) ); +#2602 = DIRECTION ( 'NONE', ( 0.9455286637128577087, -0.3255388549733774228, 0.000000000000000000 ) ) ; +#2603 = CARTESIAN_POINT ( 'NONE', ( -44.94552866371285660, 6.610463800732931716, 12.50000000000000000 ) ) ; +#2604 = CARTESIAN_POINT ( 'NONE', ( 41.13454712838774441, 12.68826868899451021, 16.64362746466427367 ) ) ; +#2605 = ADVANCED_FACE ( 'NONE', ( #2127 ), #1454, .F. ) ; +#2606 = CARTESIAN_POINT ( 'NONE', ( -35.28468642979672154, 32.76846984181587175, -17.53426905273371972 ) ) ; +#2607 = CARTESIAN_POINT ( 'NONE', ( -39.33771734144060161, 22.89837003650885805, 17.86806588320328260 ) ) ; +#2608 = ORIENTED_EDGE ( 'NONE', *, *, #263, .T. ) ; +#2609 = ADVANCED_FACE ( 'NONE', ( #209, #371, #1715 ), #1078, .T. ) ; +#2610 = CARTESIAN_POINT ( 'NONE', ( -31.40548039598481367, 34.52978301891334212, -9.109092070848220146 ) ) ; +#2611 = LINE ( 'NONE', #1725, #1294 ) ; +#2612 = DIRECTION ( 'NONE', ( 0.000000000000000000, -1.000000000000000000, 0.000000000000000000 ) ) ; +#2613 = CARTESIAN_POINT ( 'NONE', ( -37.50000000000000000, 25.16419609954000691, 7.000000000000004441 ) ) ; +#2614 = EDGE_LOOP ( 'NONE', ( #2471, #2678 ) ) ; +#2615 = CARTESIAN_POINT ( 'NONE', ( -45.50000000000000000, 5.000000000000000000, -135.3085362679971126 ) ) ; +#2616 = CARTESIAN_POINT ( 'NONE', ( -34.73009560827659215, 34.67215538705031719, 7.694174863920470564 ) ) ; +#2617 = CARTESIAN_POINT ( 'NONE', ( -37.50000000000000000, 0.000000000000000000, 9.749999999999998224 ) ) ; +#2618 = CARTESIAN_POINT ( 'NONE', ( 44.72738788084893713, 7.244054414484648596, 14.18329770745364549 ) ) ; +#2619 = CARTESIAN_POINT ( 'NONE', ( -41.26442097287803534, 17.30225306865554202, 16.79236178307624172 ) ) ; +#2620 = VERTEX_POINT ( 'NONE', #1499 ) ; +#2621 = CARTESIAN_POINT ( 'NONE', ( -32.01655176691529192, 32.34941709639529961, -12.94019891333433847 ) ) ; +#2622 = CARTESIAN_POINT ( 'NONE', ( -31.86181303274648968, 34.77032875699576664, -8.655019049852235469 ) ) ; +#2623 = CARTESIAN_POINT ( 'NONE', ( -36.74760041787510545, 27.74687895898127366, -7.000000000000003553 ) ) ; +#2624 = CARTESIAN_POINT ( 'NONE', ( 37.50000000000000000, 75.00000000000001421, -9.749999999999998224 ) ) ; +#2625 = ADVANCED_FACE ( 'NONE', ( #2350 ), #1470, .F. ) ; +#2626 = CARTESIAN_POINT ( 'NONE', ( 31.94552866371286370, 44.36900610829383851, 12.50000000000000000 ) ) ; +#2627 = PRODUCT_DEFINITION_SHAPE ( 'NONE', 'NONE', #2111 ) ; +#2628 = EDGE_LOOP ( 'NONE', ( #1859, #1296, #924, #771, #1408 ) ) ; +#2629 = CARTESIAN_POINT ( 'NONE', ( -33.43177830774572357, 34.97387511022177620, -17.46161727953160536 ) ) ; +#2630 = CARTESIAN_POINT ( 'NONE', ( -35.17200529168098200, 34.99769424202530388, 6.820388475540610784 ) ) ; +#2631 = CARTESIAN_POINT ( 'NONE', ( -32.14518621856249325, 32.72879920981659296, -11.24462381489573914 ) ) ; +#2632 = CARTESIAN_POINT ( 'NONE', ( 42.43541227556363538, 8.222925807528202569, 14.93394762038420787 ) ) ; +#2633 = CARTESIAN_POINT ( 'NONE', ( -35.13191470449255149, 33.10592325286900461, -17.46444534699889317 ) ) ; +#2634 = CARTESIAN_POINT ( 'NONE', ( -42.26572163226845191, 8.805405019716850745, 15.25141648470139621 ) ) ; +#2635 = CIRCLE ( 'NONE', #43, 1.750000000000000888 ) ; +#2636 = CARTESIAN_POINT ( 'NONE', ( -30.07847176690764357, 32.69000639195882485, -12.23827161217920434 ) ) ; +#2637 = VECTOR ( 'NONE', #2566, 1000.000000000000000 ) ; +#2638 = CARTESIAN_POINT ( 'NONE', ( -32.00623955549127686, 35.50097029340265209, -11.40582650544678067 ) ) ; +#2639 = DIRECTION ( 'NONE', ( 0.000000000000000000, -1.000000000000000000, 0.000000000000000000 ) ) ; +#2640 = FACE_OUTER_BOUND ( 'NONE', #869, .T. ) ; +#2641 = CARTESIAN_POINT ( 'NONE', ( 32.20724408224754143, 43.60885282342698588, 14.05137967152550083 ) ) ; +#2642 = ORIENTED_EDGE ( 'NONE', *, *, #1171, .T. ) ; +#2643 = EDGE_CURVE ( 'NONE', #440, #1264, #2514, .T. ) ; +#2644 = CARTESIAN_POINT ( 'NONE', ( -32.28090642499899587, 43.07922933215529326, 10.72781387842156953 ) ) ; +#2645 = CARTESIAN_POINT ( 'NONE', ( 37.50000000000000000, 10.00000000000000000, -0.5000000000000004441 ) ) ; +#2646 = CARTESIAN_POINT ( 'NONE', ( -42.41046231078231443, 13.97357227300998872, 17.66819956641551315 ) ) ; +#2647 = CARTESIAN_POINT ( 'NONE', ( -31.99997465284142706, 32.30150177216948038, -12.39073177440097062 ) ) ; +#2648 = CARTESIAN_POINT ( 'NONE', ( -34.12997056330182488, 34.79430200687454544, -7.179147523306513179 ) ) ; +#2649 = DIRECTION ( 'NONE', ( -0.000000000000000000, 1.000000000000000000, -0.000000000000000000 ) ) ; +#2650 = CARTESIAN_POINT ( 'NONE', ( -35.79910006918283472, 33.17629541993650122, -18.44744178313778349 ) ) ; +#2651 = DIRECTION ( 'NONE', ( -0.000000000000000000, 1.000000000000000000, -0.000000000000000000 ) ) ; +#2652 = EDGE_LOOP ( 'NONE', ( #81, #647 ) ) ; +#2653 = PRODUCT_CONTEXT ( 'NONE', #478, 'mechanical' ) ; +#2654 = CARTESIAN_POINT ( 'NONE', ( -32.20724408224754143, 43.60885282342698588, 10.94862032847449917 ) ) ; +#2655 = DIRECTION ( 'NONE', ( -0.000000000000000000, -1.000000000000000000, -0.000000000000000000 ) ) ; +#2656 = EDGE_CURVE ( 'NONE', #2692, #2740, #192, .T. ) ; +#2657 = FACE_OUTER_BOUND ( 'NONE', #1226, .T. ) ; +#2658 = AXIS2_PLACEMENT_3D ( 'NONE', #881, #1675, #2583 ) ; +#2659 = CARTESIAN_POINT ( 'NONE', ( -32.10328509828497090, 32.60361429427916846, -11.43419781602488960 ) ) ; +#2660 = CARTESIAN_POINT ( 'NONE', ( -33.46221696823123182, 34.96965691954395083, -7.521081067193763126 ) ) ; +#2661 = DIRECTION ( 'NONE', ( -0.3255388549733759240, -0.9455286637128581528, 0.000000000000000000 ) ) ; +#2662 = CARTESIAN_POINT ( 'NONE', ( -35.28047570514758746, 32.78292353033875628, -17.53245117473092307 ) ) ; +#2663 = CARTESIAN_POINT ( 'NONE', ( 31.99999999999999289, 44.04346725332046475, 9.278174593052023411 ) ) ; +#2664 = VERTEX_POINT ( 'NONE', #808 ) ; +#2665 = CARTESIAN_POINT ( 'NONE', ( 0.000000000000000000, 0.000000000000000000, 0.000000000000000000 ) ) ; +#2666 = CARTESIAN_POINT ( 'NONE', ( -43.29723134156039066, 11.39794873719420565, 11.00854648015628356 ) ) ; +#2667 = CARTESIAN_POINT ( 'NONE', ( -31.99996665789103645, 32.30147870511411412, -12.38919095465474562 ) ) ; +#2668 = CARTESIAN_POINT ( 'NONE', ( -32.20724408224923252, 43.60885282341672564, 14.05137967152085032 ) ) ; +#2669 = EDGE_CURVE ( 'NONE', #1656, #484, #1693, .T. ) ; +#2670 = CARTESIAN_POINT ( 'NONE', ( -31.91184017190819944, 37.19743678734352699, -11.86713072258852186 ) ) ; +#2671 = EDGE_CURVE ( 'NONE', #1870, #1438, #977, .T. ) ; +#2672 = CARTESIAN_POINT ( 'NONE', ( -37.50000000000000000, 5.000000000000004441, 9.749999999999998224 ) ) ; +#2673 = CARTESIAN_POINT ( 'NONE', ( 43.20911154149919042, 11.65389298324529044, 13.74738253266046684 ) ) ; +#2674 = CARTESIAN_POINT ( 'NONE', ( -32.35763824740754302, 34.92288471850496734, -8.246680545295799192 ) ) ; +#2675 = CARTESIAN_POINT ( 'NONE', ( 39.29637667370386112, 23.01844414047112508, 19.00000000000000000 ) ) ; +#2676 = ORIENTED_EDGE ( 'NONE', *, *, #2592, .F. ) ; +#2677 = CARTESIAN_POINT ( 'NONE', ( -43.08855886698635373, 12.00403861870095135, 13.39448169394137267 ) ) ; +#2678 = ORIENTED_EDGE ( 'NONE', *, *, #1325, .F. ) ; +#2679 = CARTESIAN_POINT ( 'NONE', ( -37.50000000000000000, 75.00000000000001421, -9.749999999999998224 ) ) ; +#2680 = FACE_OUTER_BOUND ( 'NONE', #1883, .T. ) ; +#2681 = TOROIDAL_SURFACE ( 'NONE', #1038, 4.499999999999996447, 1.000000000000000000 ) ; +#2682 = CARTESIAN_POINT ( 'NONE', ( -44.94138669699436406, 6.622494156546505195, -12.23209848671220712 ) ) ; +#2683 = CARTESIAN_POINT ( 'NONE', ( -34.94235511436430386, 34.31780708879535524, -6.837713445772488186 ) ) ; +#2684 = CARTESIAN_POINT ( 'NONE', ( 37.50000000000000000, 5.000000000000000000, 12.50000000000000000 ) ) ; +#2685 = ADVANCED_FACE ( 'NONE', ( #1688 ), #822, .F. ) ; +#2686 = CLOSED_SHELL ( 'NONE', ( #1374, #2420, #1830, #1036, #648, #2095, #1498, #1538, #2334, #528, #859, #2605, #1773, #671, #2584, #1394, #2231, #2450, #1309, #156, #749, #467, #2296, #316, #2739, #2609, #295, #1847, #2499, #2167, #160, #327, #2502, #1358, #429, #1320, #724, #19, #2625, #1817, #950, #2548, #1067, #2143, #2685, #635, #807, #614, #1154, #396, #177, #534, #938, #996, #1340, #879, #2059, #1233 ) ) ; +#2687 = CARTESIAN_POINT ( 'NONE', ( 43.00000000000000000, 6.284924945759610360, 12.50000000000000000 ) ) ; +#2688 = CARTESIAN_POINT ( 'NONE', ( -30.74911587642074906, 33.95800866149480868, -9.960050070298168023 ) ) ; +#2689 = CARTESIAN_POINT ( 'NONE', ( -43.41506391757481964, 11.05570363667380995, -11.06815175734728918 ) ) ; +#2690 = VERTEX_POINT ( 'NONE', #1485 ) ; +#2691 = CARTESIAN_POINT ( 'NONE', ( -41.64362746466424881, 10.94080219669100629, 8.865452871612232499 ) ) ; +#2692 = VERTEX_POINT ( 'NONE', #1108 ) ; +#2693 = DIRECTION ( 'NONE', ( 1.000000000000000000, 0.000000000000000000, 0.000000000000000000 ) ) ; +#2694 = CARTESIAN_POINT ( 'NONE', ( 37.50000000000000000, 5.000000000000004441, -12.50000000000000000 ) ) ; +#2695 = ORIENTED_EDGE ( 'NONE', *, *, #2669, .F. ) ; +#2696 = CARTESIAN_POINT ( 'NONE', ( -43.64654375114167095, 10.38336970674818716, -13.47706415008192060 ) ) ; +#2697 = CARTESIAN_POINT ( 'NONE', ( -35.10826710052241140, 33.14810076276800288, -7.546809860019490834 ) ) ; +#2698 = CARTESIAN_POINT ( 'NONE', ( -34.61899141748324382, 33.70810724951781623, -17.19051702500752654 ) ) ; +#2699 = CIRCLE ( 'NONE', #734, 4.000000000000000000 ) ; +#2700 = CARTESIAN_POINT ( 'NONE', ( 43.64736563080724352, 10.38098255457818553, 13.50780290469519329 ) ) ; +#2701 = EDGE_CURVE ( 'NONE', #2512, #2692, #257, .T. ) ; +#2702 = CARTESIAN_POINT ( 'NONE', ( -43.30319550006222329, 11.38062581941505158, -11.11271680004639428 ) ) ; +#2703 = ORIENTED_EDGE ( 'NONE', *, *, #199, .F. ) ; +#2704 = CARTESIAN_POINT ( 'NONE', ( -43.51720173354104304, 10.75904401780104180, 11.75641218837916036 ) ) ; +#2705 = ORIENTED_EDGE ( 'NONE', *, *, #2026, .T. ) ; +#2706 = VERTEX_POINT ( 'NONE', #1776 ) ; +#2707 = FACE_OUTER_BOUND ( 'NONE', #1506, .T. ) ; +#2708 = CARTESIAN_POINT ( 'NONE', ( -32.03545348354649036, 43.92176981164325866, 13.21993941643107640 ) ) ; +#2709 = CARTESIAN_POINT ( 'NONE', ( -34.29859475771816335, 33.87937285550358268, -8.026125860938119416 ) ) ; +#2710 = ORIENTED_EDGE ( 'NONE', *, *, #1159, .T. ) ; +#2711 = CARTESIAN_POINT ( 'NONE', ( 1.750000000000000888, 24.99999999999999645, 20.50000000000000000 ) ) ; +#2712 = CARTESIAN_POINT ( 'NONE', ( -32.67747835695446668, 34.97898588707287360, -16.98792452810606335 ) ) ; +#2713 = CARTESIAN_POINT ( 'NONE', ( 43.54841234349629531, 10.66839269962366465, 13.83319670399970747 ) ) ; +#2714 = CARTESIAN_POINT ( 'NONE', ( 34.45097498341975495, 37.09192911891108224, 7.302165524865620760 ) ) ; +#2715 = CARTESIAN_POINT ( 'NONE', ( -41.85058052292291109, 10.23041621433535120, -15.87251176738538305 ) ) ; +#2716 = ORIENTED_EDGE ( 'NONE', *, *, #979, .F. ) ; +#2717 = EDGE_CURVE ( 'NONE', #1438, #1098, #1920, .T. ) ; +#2718 = AXIS2_PLACEMENT_3D ( 'NONE', #280, #1137, #2423 ) ; +#2719 = CIRCLE ( 'NONE', #1648, 5.000000000000000888 ) ; +#2720 = CARTESIAN_POINT ( 'NONE', ( -42.85920530509991266, 6.768216077037892298, 11.25047455158265031 ) ) ; +#2721 = ORIENTED_EDGE ( 'NONE', *, *, #2701, .F. ) ; +#2722 = ORIENTED_EDGE ( 'NONE', *, *, #447, .T. ) ; +#2723 = FACE_BOUND ( 'NONE', #275, .T. ) ; +#2724 = CARTESIAN_POINT ( 'NONE', ( -30.24108867664220668, 33.09510371101609394, -11.01637359942223959 ) ) ; +#2725 = CARTESIAN_POINT ( 'NONE', ( -1.750000000000000888, 65.00000000000000000, 20.50000000000000000 ) ) ; +#2726 = ORIENTED_EDGE ( 'NONE', *, *, #1663, .F. ) ; +#2727 = LINE ( 'NONE', #2711, #757 ) ; +#2728 = FACE_OUTER_BOUND ( 'NONE', #1230, .T. ) ; +#2729 = CARTESIAN_POINT ( 'NONE', ( -32.37073422028953473, 35.27469942497417321, -14.60481899148886953 ) ) ; +#2730 = AXIS2_PLACEMENT_3D ( 'NONE', #361, #1651, #1219 ) ; +#2731 = CARTESIAN_POINT ( 'NONE', ( 34.50846982257023399, 36.92493517149642202, 7.789529316018065863 ) ) ; +#2732 = CARTESIAN_POINT ( 'NONE', ( -38.87646853286651805, 20.43933743288788207, -17.84423805688090781 ) ) ; +#2733 = ORIENTED_EDGE ( 'NONE', *, *, #1644, .T. ) ; +#2734 = CARTESIAN_POINT ( 'NONE', ( 0.000000000000000000, 65.00000000000000000, 9.500000000000001776 ) ) ; +#2735 = VERTEX_POINT ( 'NONE', #1746 ) ; +#2736 = CARTESIAN_POINT ( 'NONE', ( 17.22413793103449464, 15.00000000000000000, -0.5000000000000004441 ) ) ; +#2737 = DIRECTION ( 'NONE', ( 0.000000000000000000, 0.000000000000000000, -1.000000000000000000 ) ) ; +#2738 = CARTESIAN_POINT ( 'NONE', ( -9.209006928406465065, 19.08775981524247456, 4.500000000000000888 ) ) ; +#2739 = ADVANCED_FACE ( 'NONE', ( #457, #1341 ), #2421, .T. ) ; +#2740 = VERTEX_POINT ( 'NONE', #2169 ) ; +#2741 = CARTESIAN_POINT ( 'NONE', ( -37.50000000000000000, 25.16419609954000691, 7.000000000000004441 ) ) ; +#2742 = CARTESIAN_POINT ( 'NONE', ( -44.93248048743244283, 6.648362271203721363, 12.92516777354943258 ) ) ; +#2743 = LINE ( 'NONE', #2164, #904 ) ; +#2744 = CARTESIAN_POINT ( 'NONE', ( 32.80462327031869307, 41.87376302754584856, 9.242520617630988866 ) ) ; +#2745 = CARTESIAN_POINT ( 'NONE', ( -43.64654375114278650, 10.38336970674933646, -11.52293584991913455 ) ) ; +#2746 = VERTEX_POINT ( 'NONE', #501 ) ; +#2747 = AXIS2_PLACEMENT_3D ( 'NONE', #1886, #863, #1048 ) ; +#2748 = CARTESIAN_POINT ( 'NONE', ( 32.00000000000000000, 44.04346725332046475, 12.50000000000000000 ) ) ; +#2749 = VERTEX_POINT ( 'NONE', #2212 ) ; +#2750 = CARTESIAN_POINT ( 'NONE', ( -40.62089237294614463, 19.17138398148123457, -20.51905119829299906 ) ) ; +#2751 = DIRECTION ( 'NONE', ( 0.9422632794457277416, -0.3348729792147797646, 0.000000000000000000 ) ) ; +#2752 = CARTESIAN_POINT ( 'NONE', ( 37.50000000000000000, 75.00000000000001421, 17.99999999999999645 ) ) ; +#2753 = ORIENTED_EDGE ( 'NONE', *, *, #1561, .T. ) ; +#2754 = EDGE_CURVE ( 'NONE', #630, #440, #41, .T. ) ; +#2755 = CARTESIAN_POINT ( 'NONE', ( -35.89971384576189450, 32.88406237842237090, -7.200207811996365059 ) ) ; +#2756 = CARTESIAN_POINT ( 'NONE', ( 44.94552866371287791, 6.610463800732935269, 12.60635600570758896 ) ) ; +#2757 = CARTESIAN_POINT ( 'NONE', ( 33.35637253533361957, 39.38759000238739105, 8.865452871614355246 ) ) ; +#2758 = DIRECTION ( 'NONE', ( -1.000000000000000000, 0.000000000000000000, -0.000000000000000000 ) ) ; +#2759 = ORIENTED_EDGE ( 'NONE', *, *, #434, .F. ) ; +#2760 = FACE_OUTER_BOUND ( 'NONE', #1684, .T. ) ; +#2761 = VERTEX_POINT ( 'NONE', #1327 ) ; +#2762 = CIRCLE ( 'NONE', #1646, 4.000000000000000000 ) ; +#2763 = AXIS2_PLACEMENT_3D ( 'NONE', #774, #2485, #565 ) ; +#2764 = CARTESIAN_POINT ( 'NONE', ( 37.50000000000000000, 75.00000000000001421, -12.50000000000000000 ) ) ; +#2765 = CARTESIAN_POINT ( 'NONE', ( -32.48400049863987959, 33.37196717446787630, -10.23269389697909482 ) ) ; +ENDSEC; +END-ISO-10303-21; diff --git a/jsk_fetch_robot/jsk_fetch_accessories/head_l515/fetch_head_l515_mount.stl b/jsk_fetch_robot/jsk_fetch_accessories/head_l515/fetch_head_l515_mount.stl new file mode 100755 index 0000000000..a266ec7d48 Binary files /dev/null and b/jsk_fetch_robot/jsk_fetch_accessories/head_l515/fetch_head_l515_mount.stl differ diff --git a/jsk_fetch_robot/jsk_fetch_accessories/head_l515/fetch_head_l515_mount_simplified.stl b/jsk_fetch_robot/jsk_fetch_accessories/head_l515/fetch_head_l515_mount_simplified.stl new file mode 100755 index 0000000000..62ef2ca512 Binary files /dev/null and b/jsk_fetch_robot/jsk_fetch_accessories/head_l515/fetch_head_l515_mount_simplified.stl differ diff --git a/jsk_fetch_robot/jsk_fetch_startup/CMakeLists.txt b/jsk_fetch_robot/jsk_fetch_startup/CMakeLists.txt index be9259dac6..20cade468e 100644 --- a/jsk_fetch_robot/jsk_fetch_startup/CMakeLists.txt +++ b/jsk_fetch_robot/jsk_fetch_startup/CMakeLists.txt @@ -10,7 +10,19 @@ endif() ## Find catkin macros and libraries ## if COMPONENTS list like find_package(catkin REQUIRED COMPONENTS xyz) ## is used, also find other catkin packages -find_package(catkin) +find_package(catkin REQUIRED COMPONENTS + roscpp + std_msgs + sensor_msgs + geometry_msgs + tf + tf2 + tf2_geometry_msgs + tf2_ros + tf2_eigen + tf2_msgs +) +find_package(Boost REQUIRED COMPONENTS) ################################### ## catkin specific configuration ## @@ -20,6 +32,18 @@ catkin_package() catkin_add_env_hooks(99.jsk_fetch_startup SHELLS bash zsh sh DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/env-hooks) +########### +## Build ## +########### +include_directories( + ${catkin_INCLUDE_DIRS} + ${Boost_INCLUDE_DIRS} +) +add_executable(trashbins_pose_estimator src/trashbins_pose_estimator.cpp) +target_link_libraries(trashbins_pose_estimator + ${catkin_LIBRARIES} +) + ############# ## Install ## ############# @@ -51,9 +75,25 @@ macro(configure_icon_files icol iname) endif() endmacro(configure_icon_files) +macro(configure_dialogflow_hotword_yaml dname) + set(FETCH_NAME ${dname}) + if (${FETCH_NAME} STREQUAL "fetch15") + set(ROBOT_NICKNAME_KANA "ヘンゼル") + set(ROBOT_NICKNAME_HIRA "へんぜる") + configure_file(${CMAKE_CURRENT_SOURCE_DIR}/config/dialogflow_hotword.yaml.in + ${CMAKE_CURRENT_SOURCE_DIR}/config/${FETCH_NAME}_dialogflow_hotword.yaml) + elseif (${FETCH_NAME} STREQUAL "fetch1075") + set(ROBOT_NICKNAME_KANA "グレーテル") + set(ROBOT_NICKNAME_HIRA "ぐれーてる") + configure_file(${CMAKE_CURRENT_SOURCE_DIR}/config/dialogflow_hotword.yaml.in + ${CMAKE_CURRENT_SOURCE_DIR}/config/${FETCH_NAME}_dialogflow_hotword.yaml) + endif() +endmacro(configure_dialogflow_hotword_yaml) + configure_icon_files(blue fetch15) configure_icon_files(red fetch1075) - +configure_dialogflow_hotword_yaml(fetch15) +configure_dialogflow_hotword_yaml(fetch1075) ############# ## Testing ## diff --git a/jsk_fetch_robot/jsk_fetch_startup/README.md b/jsk_fetch_robot/jsk_fetch_startup/README.md index a509050a34..d23cac2634 100644 --- a/jsk_fetch_robot/jsk_fetch_startup/README.md +++ b/jsk_fetch_robot/jsk_fetch_startup/README.md @@ -1,5 +1,28 @@ # jsk_fetch_startup +- [jsk_fetch_startup](#jsk_fetch_startup) + - [SetUp (Running following commands in the first time)](#setup-running-following-commands-in-the-first-time) + - [Install a udev rule](#install-a-udev-rule) + - [For realsense](#for-realsense) + - [supervisor](#supervisor) + - [cron](#cron) + - [mongodb](#mongodb) + - [Teleoperation](#teleoperation) + - [Maintenance](#maintenance) + - [re-roslaunch jsk_fetch_startup fetch_bringup.launch](#re-roslaunch-jsk_fetch_startup-fetch_bringuplaunch) + - [re-roslaunch fetch_bringup fetch.launch](#re-roslaunch-fetch_bringup-fetchlaunch) + - [Clock Synchronization](#clock-synchronization) + - [Network](#network) + - [General description](#general-description) + - [Case description](#case-description) + - [Access point](#access-point) + - [Log](#log) + - [Apps](#apps) + - [Note](#note) + - [Add fetch to rwt_app_chooser](#add-fetch-to-rwt_app_chooser) + - [Execute demos](#execute-demos) + - [Administration](#administration) + ## SetUp (Running following commands in the first time) ### Install a udev rule @@ -7,80 +30,137 @@ rosrun jsk_fetch_startup install_udev.sh ``` -#### For realsense -udev rule have to be manually installed according to [this issue](https://github.com/IntelRealSense/realsense-ros/issues/1426) when using realsense-ros from ROS repository. +### For realsense + +Before start this, remove `librealsense2` and `realsense2-ros` from ROS repository and set not to be installed. + +```bash +sudo apt purge ros-melodic-librealsense2* ros-melodic-realsense* +sudo apt-mark hold ros-melodic-librealsense2 ros-melodic-realsense2-camera +``` + +After that, please add Intel repository and install `librealsense2` packages. (see [this page](https://github.com/IntelRealSense/librealsense/blob/master/doc/distribution_linux.md#installing-the-packages)) + +```bash +sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-key F6E65AC044F831AC80A06380C8B3A55A6F3EFCDE || sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-key F6E65AC044F831AC80A06380C8B3A55A6F3EFCDE +sudo add-apt-repository "deb https://librealsense.intel.com/Debian/apt-repo $(lsb_release -cs) main" -u +sudo apt install librealsense2=2.45.0-0~realsense0.4551 +sudo apt install librealsense2-dev=2.45.0-0~realsense0.4551 +sudo apt-mark hold librealsense2 librealsense2-dev +``` + +### Install config.bash + +JSK fetch system uses some enviroment variables. To set them, copy `config.bash` to `/var/lib/robot/config.bash` and modify it. + +```bash +roscd jsk_fetch_startup +sudo cp config/config.bash /var/lib/robot/config.bash +``` + +descriptions of each variable are below. + +- `USE_BASE_CAMERA_MOUNT` + + Flag for robot model +- `USE_HEAD_BOX` + + Flag for robot model +- `USE_HEAD_L515` + + Flag for robot model +- `USE_INSTA360_STAND` + + Flag for robot model +- `RS_SERIAL_NO_T265` + + Serial number of Realsense T265 for visual odometry. + + realsense will not be launched when this is blank. +- `RS_SERIAL_NO_D435_FRONTRIGHT` + + Serial number of Realsense D435 on the base + + realsense will not be launched when this is blank. +- `RS_SERIAL_NO_D435_FRONTLEFT` + + Serial number of Realsense D435 on the base + + realsense will not be launched when this is blank. +- `RS_SERIAL_NO_L515_HEAD` + + Serial number of Realsense L515 on the head + + realsense will not be launched when this is blank. +- `NETWORK_DEFAULT_WIFI_INTERFACE` + + Wi-Fi network interface for network management scripts (e.g. `network_monitor.py` and `network-log-wifi.sh`) +- `NETWORK_DEFAULT_PROFILE_ID` + + Network manager profile ID for network management scripts (`network_monitor.py`) ++ `NETWORK_DEFAULT_ROS_INTERFACE` + + Network interface or IP address or hostname which is used for ROS connection. + + `rossetclient $NETWORK_DEFAULT_ROS_INTERFACE` is executed to set `ROS_IP` or `ROS_HOSTNAME`. + +It is also recommended to add lines below to each users's bashrc in the robot PC. ```bash -wget https://github.com/IntelRealSense/librealsense/raw/master/config/99-realsense-libusb.rules -sudo mv 99-realsense-libusb.rules /etc/udev/rules.d/ -sudo udevadm control --reload-rules && sudo udevadm trigger +source /var/lib/robot/config.bash +rossetmaster localhost +rossetip $NETWORK_DEFAULT_ROS_INTERFACE ``` ### supervisor + Important jobs for fetch operation are managed by supervisor. Here is a list of jobs that are managed by supervisor. - - roscore +- roscore Start roscore - - robot +- robot Launch Minimum ROS programs to run fetch - - jsk-fetch-startup +- jsk-fetch-startup Launch ROS programs extended by JSK - - jsk-network-monitor +- jsk-network-monitor Restart the network manager automatically if ping does not work. - - jsk-log-wifi +- jsk-log-wifi Monitor network condition - - jsk-app-scheduler +- jsk-app-scheduler Scheduler to launch [app](https://github.com/knorth55/app_manager_utils/tree/master/app_scheduler) at a fixed time - - jsk-object-detector +- jsk-object-detector Object detection using fetch's head camera and [coral_usb_ros](https://github.com/knorth55/coral_usb_ros) - - jsk-panorama-object-detector: +- jsk-panorama-object-detector: Object detection using fetch's 360 camera and [coral_usb_ros](https://github.com/knorth55/coral_usb_ros) - - jsk-human-pose-estimator +- jsk-human-pose-estimator Human pose estimation using fetch's head camera and [coral_usb_ros](https://github.com/knorth55/coral_usb_ros) - - jsk-panorama-human-pose-estimator +- jsk-panorama-human-pose-estimator Human pose estimation using fetch's 360 camera and [coral_usb_ros](https://github.com/knorth55/coral_usb_ros) - - jsk-dialog +- jsk-dialog Launch [dialogflow_task_exective](https://github.com/jsk-ros-pkg/jsk_3rdparty/tree/master/dialogflow_task_executive) - - jsk-gdrive +- jsk-gdrive Launch [app](https://github.com/knorth55/app_manager_utils/tree/master/app_uploader) to upload data to Goole Drive - - jsk-dstat +- jsk-dstat Monitor fetch's resource using dstat command - - jsk-lifelog +- jsk-lifelog Launch program to save fetch's [lifelog](https://github.com/jsk-ros-pkg/jsk_robot/tree/master/jsk_robot_common/jsk_robot_startup/lifelog) - Install supervisor config files. e.g. `robot.conf`, `jsk_fetch_startup.conf` ... -``` +```bash su -c 'rosrun jsk_fetch_startup install_supervisor.sh' ``` @@ -90,17 +170,17 @@ Previously, upstart was used, but it has been moved to supervisor. This is becau ![supervisor_status](https://user-images.githubusercontent.com/19769486/119499716-f142c000-bda1-11eb-9b96-0cfa7e04a1b2.png) - ### cron + Install cron jobs for root user and fetch user. e.g. `shutdown`, `update_workspace`. -``` +```bash su -c 'rosrun jsk_fetch_startup install_cron.sh' ``` ### mongodb -``` +```bash sudo mkdir -p /var/lib/robot/mongodb_store/ # to see the db items from http://lcoalhost/rockmongo @@ -112,11 +192,7 @@ sudo mv rockmongo-1.1.7 /var/www/html/rockmongo # $MONGO["servers"][$i]["control_auth"] = false; // true;//enable control users, works only if mongo_auth=false ``` -### Coral Edge TPU -Create ROS workspace for Coral Edge TPU. Please see: -https://github.com/knorth55/coral_usb_ros - -### Teleoperation +## Teleoperation For the JSK safe teleop system, please see [data flow diagram of safe_teleop.launch](https://github.com/jsk-ros-pkg/jsk_robot/tree/master/jsk_robot_common/jsk_robot_startup#launchsafe_teleoplaunch) @@ -128,19 +204,22 @@ The numbers assigned to the joystick are as follows. ## Maintenance ### re-roslaunch jsk_fetch_startup fetch_bringup.launch -``` + +```bash sudo supervisorctl restart jsk-fetch-startup ``` ### re-roslaunch fetch_bringup fetch.launch -``` + +```bash sudo supervisorctl restart robot ``` ### [Clock Synchronization](https://github.com/fetchrobotics/docs/blob/0c1c63ab47952063bf60280e74b4ff3ae07fd914/source/computer.rst) install `chrony` and add ```server `gethostip -d fetch15` offline minpoll 8``` to /etc/chrony/chrony.conf, restart chronyd by `sudo /etc/init.d/chrony restart` and wait for few seconds, if you get -``` + +```bash $ chronyc tracking Reference ID : 133.11.216.145 (fetch15.jsk.imi.i.u-tokyo.ac.jp) Stratum : 4 @@ -156,21 +235,22 @@ Root dispersion : 0.018803 seconds Update interval : 2.1 seconds Leap status : Normal ``` -it works, if you get `127.127.1.1` for `Reference ID`, something wrong +it works, if you get `127.127.1.1` for `Reference ID`, something wrong ## Network + ### General description + Fetch has wired and wireless network connections. If we use both of wired and wireless connections as DHCP, DNS holds two IP addresses for same hostname (fetch15 in this case). This cause problems in network such as ROS communication or ssh connection. -The solution we take now (2016/11/01) is using wired connection as static IP. -By doing so, DNS holds only one IP adress (for wireless connection) for fetch hostname. - ### Case description + If you see the following result, it is OK. -``` + +```bash $ nslookup fetch15.jsk.imi.i.u-tokyo.ac.jp Server: 127.0.1.1 Address: 127.0.1.1#53 @@ -180,24 +260,70 @@ Address: 133.11.216.145 ``` If two or more IP addresses apper, something is wrong. -Please connect display, open a window of network manager, and check that wired connection uses static IP. +Please connect display, open a window of network manager. -### Access point -Define access point setting, such as ssid: -``` +### Network configuration + +Ubuntu 18.04 uses [NetworkManager](https://wiki.archlinux.jp/index.php/NetworkManager) for network configuration. +Network manager's profiles are in `/etc/NetworkManager/system-connections`. + +```bash cd /etc/NetworkManager/system-connections ``` -### Log +You can also see profiles with `nmcli`, `nmtui` or `nm-connection-editor` (GUI) command. + +To see available connection profiles. + +```bash +fetch@fetch1075:~$ nmcli connection +NAME UUID TYPE DEVICE +netplan-eth1 433e484b-3493-3640-9368-395c0c752304 ethernet eth1 +sanshiro-73B2 1f0f9db6-e448-41ef-9d27-e1ed4e48a4f5 wifi wlan1 +Wired connection 1 eb557bda-e1bf-3ab7-89e9-1f839cd6b88a ethernet -- +fetch1075-hotspot b85c6a8f-9d28-4cf3-95a0-6dc37229863d wifi -- +sanshiro-outside d7ee2165-c93a-4050-862d-d0c381a546ab wifi -- +fetch@fetch1075:~$ nmcli c show sanshiro-73B2 +``` + +To activate some connection. + +```bash +fetch@fetch1075:~$ sudo nmcli c up sanshiro-outside +[sudo] password for fetch: +Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/5) +fetch@fetch1075:~$ sudo nmcli c up sanshiro-73B2 +Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/6) +``` + +To edit connection profiles, use `nmtui` or `nm-connection-editor` + +### Default connection profiles + +fetch15 and fetch1075 has `sanshiro-73B2` and `sanshiro-outside` connections by default. (If not, please make them) + +- `sanshiro-73B2` (Connect `sanshiro` with fixed BSSID) +- `sanshiro-outside` (Connect `sanshiro` without fixed BSSID) + +By default, `sanshiro-73B2` is activated for stable connection in 73B2. +If you want to use fetch outside of 73B2, it is recommended to activate `sanshiro-outside`. + +```bash +sudo nmcli c up sanshiro-outside +``` + +## Log tmuxinator makes it easy to check the important logs of fetch from command line. Currently, it shows the logs of the supervisor jobs. Install tmuxinator config. + ```bash rosrun jsk_fetch_startup install_tmuxinator.sh ``` Show logs + ```bash tmuxinator log ``` @@ -234,6 +360,7 @@ tmuxinator log You can not run this on Firefox. Please use Google Chrome. ### Add fetch to rwt_app_chooser + 1. Access [http://tork-a.github.io/visualization_rwt/rwt_app_chooser](http://tork-a.github.io/visualization_rwt/rwt_app_chooser "website"). - Be careful to access the site via http, not https, to to enable websocket communication. - Modern browsers may automatically redirect from http to https. @@ -244,7 +371,27 @@ You can not run this on Firefox. Please use Google Chrome. 1. Click `ADD ROBOT` button ### Execute demos + 1. Click `fetch15` at `Select Robot` window 1. Select task which are shown with icons. ![select_app](https://user-images.githubusercontent.com/19769486/40872010-7d21d2bc-6681-11e8-8c0b-621f199638dd.png) + +## Administration + +- 2016/10/26 add `allow 133.11.216/8` to /etc/chrony/chrony.conf +- 2018/08/26 add `0 10 * * 1-5 /home/fetch/ros/indigo_robot/devel/env.sh rosservice call /fetch15/start_app "name: 'jsk_fetch_startup/go_to_kitchen'"` to crontab + - `fetch` goes to 73B2 kitchen at 10:00 AM from Monday to Friday. +- 2019/04/19: add `fetch` user in `pulse-access` group. +- 2019/04/19: set `start on runlevel [2345]` in `/etc/init/pulseaudio.conf`. + - this modification is needed for starting `pulseaudio` in boot. + - `pulseaudio` is required to register USB speaker on head in boot. +- 2019/04/19: set `env DISALLOW_MODULE_LOADING=0` in `/etc/init/pulseaudio.conf`. + - this modification is needed for overriding default speaker setting in `/etc/init/jsk-fetch-startup.conf` + - overriding default speaker setting to use USB speaker on head is done with `pactl set-default-sink $AUDIO_DEVICE` in `/etc/init/jsk-fetch-startup.conf` +- 2019/04/19: launch `jsk_fetch_startup/fetch_bringup.launch` by `fetch` user in `/etc/init/jsk-fetch-startup.conf` + - some nodes save files by `fetch` user +- 2019/04/19: add arg `launch_teleop` in `/etc/ros/indigo/robot.launch`. + - We sent PR to upstream [fetchrobotics/fetch_robots PR#40](https://github.com/fetchrobotics/fetch_robots/pull/40). +- 2019/04/19: run `/etc/ros/indigo/robot.launch` with `arg` `launch_teleop:=false`. + - `teleop` in `/etc/ros/indigo/robot.launch` nodes were conflicted with `teleop` nodes in [jsk_fetch_startup/launch/fetch_teleop.xml](https://github.com/jsk-ros-pkg/jsk_robot/blob/master/jsk_fetch_robot/jsk_fetch_startup/launch/fetch_teleop.xml) diff --git a/jsk_fetch_robot/jsk_fetch_startup/apps/auto_dock/auto_dock.app b/jsk_fetch_robot/jsk_fetch_startup/apps/auto_dock/auto_dock.app index d628e8e57a..fd09baa3eb 100644 --- a/jsk_fetch_robot/jsk_fetch_startup/apps/auto_dock/auto_dock.app +++ b/jsk_fetch_robot/jsk_fetch_startup/apps/auto_dock/auto_dock.app @@ -1,5 +1,5 @@ display: Fetch auto dock platform: fetch -launch: jsk_fetch_startup/auto_dock.xml +run: jsk_fetch_startup/auto-dock.l interface: jsk_fetch_startup/auto_dock.interface icon: jsk_fetch_startup/auto_dock.png diff --git a/jsk_fetch_robot/jsk_fetch_startup/apps/call_k_okada/call_k_okada.app b/jsk_fetch_robot/jsk_fetch_startup/apps/call_k_okada/call_k_okada.app index acfcb25162..4577ac55ae 100644 --- a/jsk_fetch_robot/jsk_fetch_startup/apps/call_k_okada/call_k_okada.app +++ b/jsk_fetch_robot/jsk_fetch_startup/apps/call_k_okada/call_k_okada.app @@ -1,5 +1,5 @@ display: Call k-okada platform: fetch -launch: jsk_fetch_startup/call_k_okada.xml +run: jsk_fetch_startup/call-k-okada.l interface: jsk_fetch_startup/call_k_okada.interface icon: jsk_fetch_startup/call_k_okada.png diff --git a/jsk_fetch_robot/jsk_fetch_startup/apps/dock/dock.app b/jsk_fetch_robot/jsk_fetch_startup/apps/dock/dock.app index 916d8fb34c..6c034bd9aa 100644 --- a/jsk_fetch_robot/jsk_fetch_startup/apps/dock/dock.app +++ b/jsk_fetch_robot/jsk_fetch_startup/apps/dock/dock.app @@ -1,5 +1,5 @@ display: Fetch dock platform: fetch -launch: jsk_fetch_startup/dock.xml +run: jsk_fetch_startup/dock.l interface: jsk_fetch_startup/dock.interface icon: jsk_fetch_startup/dock.png diff --git a/jsk_fetch_robot/jsk_fetch_startup/apps/fetch_apps.installed b/jsk_fetch_robot/jsk_fetch_startup/apps/fetch_apps.installed index e47207b282..c1bad9ee46 100644 --- a/jsk_fetch_robot/jsk_fetch_startup/apps/fetch_apps.installed +++ b/jsk_fetch_robot/jsk_fetch_startup/apps/fetch_apps.installed @@ -29,3 +29,9 @@ apps: display: light on - app: jsk_fetch_startup/light_off display: light off + - app: jsk_fetch_startup/upload_notification + display: Upload notification + - app: jsk_fetch_startup/plug_spot_power_connector + display: Plug Spot Power Connector + - app: jsk_fetch_startup/unplug_spot_power_connector + display: Unplug Spot Power Connector diff --git a/jsk_fetch_robot/jsk_fetch_startup/apps/go_to_kitchen/go_to_kitchen.app b/jsk_fetch_robot/jsk_fetch_startup/apps/go_to_kitchen/go_to_kitchen.app index e81df30945..48e797cb66 100644 --- a/jsk_fetch_robot/jsk_fetch_startup/apps/go_to_kitchen/go_to_kitchen.app +++ b/jsk_fetch_robot/jsk_fetch_startup/apps/go_to_kitchen/go_to_kitchen.app @@ -3,53 +3,18 @@ platform: fetch launch: jsk_fetch_startup/go_to_kitchen.xml interface: jsk_fetch_startup/go_to_kitchen.interface icon: jsk_fetch_startup/go_to_kitchen.png +timeout: 1200 plugins: - name: service_notification_saver_plugin type: app_notification_saver/service_notification_saver - name: smach_notification_saver_plugin type: app_notification_saver/smach_notification_saver - - name: head_camera_video_recorder_plugin - type: app_recorder/audio_video_recorder_plugin - launch_args: - video_path: /tmp - video_title: go_to_kitchen_head_camera.avi - audio_topic_name: /audio - audio_channels: 1 - audio_sample_rate: 16000 - audio_format: wave - audio_sample_format: S16LE - video_topic_name: /head_camera/rgb/image_rect_color - video_height: 480 - video_width: 640 - video_framerate: 30 - video_encoding: RGB - - name: object_detection_video_recorder_plugin - type: app_recorder/video_recorder_plugin - launch_args: - video_path: /tmp - video_title: go_to_kitchen_object_detection.avi - video_topic_name: /edgetpu_object_detector_visualization/output - video_fps: 5.0 - - name: panorama_video_recorder_plugin - type: app_recorder/video_recorder_plugin - launch_args: - video_path: /tmp - video_title: go_to_kitchen_panorama.avi - video_topic_name: /dual_fisheye_to_panorama/output - video_fps: 1.0 - - name: respeaker_audio_recorder_plugin - type: app_recorder/audio_recorder_plugin - launch_args: - audio_path: /tmp - audio_title: go_to_kitchen_audio.wav - audio_topic_name: /audio - audio_format: wave - name: rosbag_recorder_plugin type: app_recorder/rosbag_recorder_plugin launch_args: rosbag_path: /tmp rosbag_title: go_to_kitchen_rosbag.bag - compress: true + compress: false rosbag_topic_names: - /rosout - /tf @@ -70,6 +35,8 @@ plugins: - /move_base/global_costmap/costmap - /particlecloud - /base_scan/throttled + - /dual_fisheye_to_panorama/quater/output/compressed + - /edgetpu_object_detector/output/image/compressed - /head_camera/rgb/throttled/camera_info - /head_camera/depth_registered/throttled/camera_info - /head_camera/rgb/throttled/image_rect_color/compressed @@ -80,6 +47,53 @@ plugins: - /server_name/smach/container_structure - /audio - /rviz/throttled/image/compressed + - name: head_camera_converter_plugin + type: app_recorder/rosbag_video_converter_plugin + plugin_args: + rosbag_path: /tmp + rosbag_title: go_to_kitchen_rosbag.bag + image_topic_name: /head_camera/rgb/throttled/image_rect_color/compressed + image_fps: 5 + audio_topic_name: /audio + audio_sample_rate: 16000 + audio_channels: 1 + video_path: /tmp/go_to_kitchen_head_camera.mp4 + - name: object_detection_converter_plugin + type: app_recorder/rosbag_video_converter_plugin + plugin_args: + rosbag_path: /tmp + rosbag_title: go_to_kitchen_rosbag.bag + image_topic_name: /edgetpu_object_detector/output/image/compressed + image_fps: 5 + audio_topic_name: /audio + audio_sample_rate: 16000 + audio_channels: 1 + video_path: /tmp/go_to_kitchen_object_detection.mp4 + - name: panorama_converter_plugin + type: app_recorder/rosbag_video_converter_plugin + plugin_args: + rosbag_path: /tmp + rosbag_title: go_to_kitchen_rosbag.bag + image_topic_name: /dual_fisheye_to_panorama/quater/output/compressed + image_fps: 1 + video_path: /tmp/go_to_kitchen_panorama.mp4 + - name: rviz_converter_plugin + type: app_recorder/rosbag_video_converter_plugin + plugin_args: + rosbag_path: /tmp + rosbag_title: go_to_kitchen_rosbag.bag + image_topic_name: /rviz/throttled/image/compressed + image_fps: 5 + video_path: /tmp/go_to_kitchen_rviz.mp4 + - name: respeaker_audio_converter_plugin + type: app_recorder/rosbag_audio_converter_plugin + plugin_args: + rosbag_path: /tmp + rosbag_title: go_to_kitchen_rosbag.bag + audio_topic_name: /audio + audio_sample_rate: 16000 + audio_channels: 1 + audio_path: /tmp/go_to_kitchen_audio.wav - name: result_recorder_plugin type: app_recorder/result_recorder_plugin plugin_args: @@ -90,20 +104,31 @@ plugins: plugin_args: upload_file_paths: - /tmp/go_to_kitchen_result.yaml - - /tmp/go_to_kitchen_head_camera.avi - - /tmp/go_to_kitchen_object_detection.avi - - /tmp/go_to_kitchen_panorama.avi + - /tmp/go_to_kitchen_head_camera.mp4 + - /tmp/go_to_kitchen_object_detection.mp4 + - /tmp/go_to_kitchen_panorama.mp4 + - /tmp/go_to_kitchen_rviz.mp4 - /tmp/go_to_kitchen_audio.wav - /tmp/go_to_kitchen_rosbag.bag + - /tmp/trashcan_inside.jpg upload_file_titles: - go_to_kitchen_result.yaml - - go_to_kitchen_head_camera.avi - - go_to_kitchen_object_detection.avi - - go_to_kitchen_panorama.avi + - go_to_kitchen_head_camera.mp4 + - go_to_kitchen_object_detection.mp4 + - go_to_kitchen_panorama.mp4 + - go_to_kitchen_rviz.mp4 - go_to_kitchen_audio.wav - go_to_kitchen_rosbag.bag + - trashcan_inside.jpg upload_parents_path: fetch_go_to_kitchen upload_server_name: /gdrive_server + - name: tweet_notifier_plugin + type: app_notifier/tweet_notifier_plugin + plugin_args: + client_name: /tweet_image_server/tweet + image: true + image_topic_name: /edgetpu_object_detector/output/image + warning: false - name: speech_notifier_plugin type: app_notifier/speech_notifier_plugin plugin_args: @@ -136,13 +161,15 @@ plugin_order: - move_base_cancel_plugin - service_notification_saver_plugin - smach_notification_saver_plugin - - head_camera_video_recorder_plugin - - object_detection_video_recorder_plugin - - panorama_video_recorder_plugin - - respeaker_audio_recorder_plugin - rosbag_recorder_plugin + - head_camera_converter_plugin + - object_detection_converter_plugin + - panorama_converter_plugin + - rviz_converter_plugin + - respeaker_audio_converter_plugin - result_recorder_plugin - gdrive_uploader_plugin + - tweet_notifier_plugin - speech_notifier_plugin - mail_notifier_plugin - shutdown_plugin @@ -150,13 +177,15 @@ plugin_order: - move_base_cancel_plugin - service_notification_saver_plugin - smach_notification_saver_plugin - - head_camera_video_recorder_plugin - - object_detection_video_recorder_plugin - - panorama_video_recorder_plugin - - respeaker_audio_recorder_plugin - rosbag_recorder_plugin + - head_camera_converter_plugin + - object_detection_converter_plugin + - panorama_converter_plugin + - rviz_converter_plugin + - respeaker_audio_converter_plugin - result_recorder_plugin - gdrive_uploader_plugin + - tweet_notifier_plugin - speech_notifier_plugin - mail_notifier_plugin - shutdown_plugin diff --git a/jsk_fetch_robot/jsk_fetch_startup/apps/go_to_kitchen/go_to_kitchen.xml b/jsk_fetch_robot/jsk_fetch_startup/apps/go_to_kitchen/go_to_kitchen.xml index 4cba12ab53..33dcfe3d80 100644 --- a/jsk_fetch_robot/jsk_fetch_startup/apps/go_to_kitchen/go_to_kitchen.xml +++ b/jsk_fetch_robot/jsk_fetch_startup/apps/go_to_kitchen/go_to_kitchen.xml @@ -1,8 +1,22 @@ - + + + + + + + + + + + + + diff --git a/jsk_fetch_robot/jsk_fetch_startup/apps/hello_world/hello_world.app b/jsk_fetch_robot/jsk_fetch_startup/apps/hello_world/hello_world.app index 7b9b90ea81..a2dc73bd13 100644 --- a/jsk_fetch_robot/jsk_fetch_startup/apps/hello_world/hello_world.app +++ b/jsk_fetch_robot/jsk_fetch_startup/apps/hello_world/hello_world.app @@ -1,5 +1,5 @@ display: Fetch hello world platform: fetch -launch: jsk_fetch_startup/hello_world.xml +run: jsk_robot_startup/boot_sound.py interface: jsk_fetch_startup/hello_world.interface icon: jsk_fetch_startup/hello_world.png diff --git a/jsk_fetch_robot/jsk_fetch_startup/apps/light_off/light_off.app b/jsk_fetch_robot/jsk_fetch_startup/apps/light_off/light_off.app index daf7f86708..f8aeb69c3c 100644 --- a/jsk_fetch_robot/jsk_fetch_startup/apps/light_off/light_off.app +++ b/jsk_fetch_robot/jsk_fetch_startup/apps/light_off/light_off.app @@ -1,6 +1,6 @@ display: Fetch light off platform: fetch -launch: jsk_fetch_startup/light_off.xml +run: jsk_fetch_startup/light-off.l interface: jsk_fetch_startup/light_off.interface icon: jsk_fetch_startup/light_off.png plugins: diff --git a/jsk_fetch_robot/jsk_fetch_startup/apps/light_on/light_on.app b/jsk_fetch_robot/jsk_fetch_startup/apps/light_on/light_on.app index ef63123502..eb66297f74 100644 --- a/jsk_fetch_robot/jsk_fetch_startup/apps/light_on/light_on.app +++ b/jsk_fetch_robot/jsk_fetch_startup/apps/light_on/light_on.app @@ -1,6 +1,6 @@ display: Fetch light on platform: fetch -launch: jsk_fetch_startup/light_on.xml +run: jsk_fetch_startup/light-on.l interface: jsk_fetch_startup/light_on.interface icon: jsk_fetch_startup/light_on.png plugins: diff --git a/jsk_fetch_robot/jsk_fetch_startup/apps/plug_spot_power_connector/plug_spot_power_connector.app b/jsk_fetch_robot/jsk_fetch_startup/apps/plug_spot_power_connector/plug_spot_power_connector.app new file mode 100644 index 0000000000..10982ad16c --- /dev/null +++ b/jsk_fetch_robot/jsk_fetch_startup/apps/plug_spot_power_connector/plug_spot_power_connector.app @@ -0,0 +1,75 @@ +display: Plug Spot Power Connector +platform: fetch +launch: jsk_fetch_startup/plug_spot_power_connector.xml +interface: jsk_fetch_startup/plug_spot_power_connector.interface +icon: jsk_fetch_startup/plug_spot_power_connector.png +plugins: + - name: service_notification_saver_plugin + type: app_notification_saver/service_notification_saver + - name: head_camera_video_recorder_plugin + type: app_recorder/audio_video_recorder_plugin + launch_args: + video_path: /tmp + video_title: plug_spot_power_connector_head_camera.avi + audio_topic_name: /audio + audio_channels: 1 + audio_sample_rate: 16000 + audio_format: wave + audio_sample_format: S16LE + video_topic_name: /l515_head/color/image_raw + video_height: 1080 + video_width: 1920 + video_framerate: 30 + video_encoding: RGB + - name: panorama_video_recorder_plugin + type: app_recorder/video_recorder_plugin + launch_args: + video_path: /tmp + video_title: plug_spot_power_connector_panorama.avi + video_topic_name: /dual_fisheye_to_panorama/output + video_fps: 1.0 + - name: result_recorder_plugin + type: app_recorder/result_recorder_plugin + plugin_args: + result_path: /tmp + result_title: plug_spot_power_connector_result.yaml + - name: gdrive_uploader_plugin + type: app_uploader/gdrive_uploader_plugin + plugin_args: + upload_file_paths: + - /tmp/plug_spot_power_connector_result.yaml + - /tmp/plug_spot_power_connector_head_camera.avi + - /tmp/plug_spot_power_connector_panorama.avi + upload_file_titles: + - plug_spot_power_connector_result.yaml + - plug_spot_power_connector_head_camera.avi + - plug_spot_power_connector_panorama.avi + upload_parents_path: fetch_plug_spot_power_connector + upload_server_name: /gdrive_server + - name: speech_notifier_plugin + type: app_notifier/speech_notifier_plugin + plugin_args: + client_name: /sound_play + - name: mail_notifier_plugin + type: app_notifier/mail_notifier_plugin + plugin_args: + mail_title: Fetch Plug Spot Power Connector Demo + use_timestamp_title: true + plugin_arg_yaml: /var/lib/robot/fetch_mail_notifier_plugin.yaml +plugin_order: + start_plugin_order: + - service_notification_saver_plugin + - head_camera_video_recorder_plugin + - panorama_video_recorder_plugin + - result_recorder_plugin + - gdrive_uploader_plugin + - speech_notifier_plugin + - mail_notifier_plugin + stop_plugin_order: + - service_notification_saver_plugin + - head_camera_video_recorder_plugin + - panorama_video_recorder_plugin + - result_recorder_plugin + - gdrive_uploader_plugin + - speech_notifier_plugin + - mail_notifier_plugin diff --git a/jsk_fetch_robot/jsk_fetch_startup/apps/plug_spot_power_connector/plug_spot_power_connector.interface b/jsk_fetch_robot/jsk_fetch_startup/apps/plug_spot_power_connector/plug_spot_power_connector.interface new file mode 100644 index 0000000000..044105d644 --- /dev/null +++ b/jsk_fetch_robot/jsk_fetch_startup/apps/plug_spot_power_connector/plug_spot_power_connector.interface @@ -0,0 +1,2 @@ +published_topics: {} +subscribed_topics: {} diff --git a/jsk_fetch_robot/jsk_fetch_startup/apps/plug_spot_power_connector/plug_spot_power_connector.png b/jsk_fetch_robot/jsk_fetch_startup/apps/plug_spot_power_connector/plug_spot_power_connector.png new file mode 100644 index 0000000000..d1b1329d2f Binary files /dev/null and b/jsk_fetch_robot/jsk_fetch_startup/apps/plug_spot_power_connector/plug_spot_power_connector.png differ diff --git a/jsk_fetch_robot/jsk_fetch_startup/apps/plug_spot_power_connector/plug_spot_power_connector.xml b/jsk_fetch_robot/jsk_fetch_startup/apps/plug_spot_power_connector/plug_spot_power_connector.xml new file mode 100644 index 0000000000..ad05e91977 --- /dev/null +++ b/jsk_fetch_robot/jsk_fetch_startup/apps/plug_spot_power_connector/plug_spot_power_connector.xml @@ -0,0 +1,3 @@ + + + diff --git a/jsk_fetch_robot/jsk_fetch_startup/apps/software_runstop/software_runstop.app b/jsk_fetch_robot/jsk_fetch_startup/apps/software_runstop/software_runstop.app index 6c86c77347..ed4a25c745 100644 --- a/jsk_fetch_robot/jsk_fetch_startup/apps/software_runstop/software_runstop.app +++ b/jsk_fetch_robot/jsk_fetch_startup/apps/software_runstop/software_runstop.app @@ -1,5 +1,6 @@ display: Fetch software runstop platform: fetch -launch: jsk_fetch_startup/software_runstop.xml +run: rostopic/rostopic +run_args: "pub -1 /enable_software_runstop std_msgs/Bool 'data: true'" interface: jsk_fetch_startup/software_runstop.interface icon: jsk_fetch_startup/software_runstop.png diff --git a/jsk_fetch_robot/jsk_fetch_startup/apps/speak_battery/speak_battery.app b/jsk_fetch_robot/jsk_fetch_startup/apps/speak_battery/speak_battery.app index 0a48645098..2dc162d470 100644 --- a/jsk_fetch_robot/jsk_fetch_startup/apps/speak_battery/speak_battery.app +++ b/jsk_fetch_robot/jsk_fetch_startup/apps/speak_battery/speak_battery.app @@ -1,6 +1,6 @@ display: Speak battery platform: fetch -launch: jsk_fetch_startup/speak_battery.xml +run: jsk_fetch_startup/speak-battery.l interface: jsk_fetch_startup/speak_battery.interface icon: jsk_fetch_startup/speak_battery.png plugins: @@ -8,6 +8,7 @@ plugins: type: app_notifier/user_speech_notifier_plugin plugin_args: client_name: /sound_play + warning: true plugin_order: start_plugin_order: - user_speech_notifier_plugin diff --git a/jsk_fetch_robot/jsk_fetch_startup/apps/time_signal/time_signal.app b/jsk_fetch_robot/jsk_fetch_startup/apps/time_signal/time_signal.app index d1c5e17227..6137ee226b 100644 --- a/jsk_fetch_robot/jsk_fetch_startup/apps/time_signal/time_signal.app +++ b/jsk_fetch_robot/jsk_fetch_startup/apps/time_signal/time_signal.app @@ -1,10 +1,17 @@ display: Speak time signal platform: fetch -launch: jsk_fetch_startup/time_signal.xml +run: jsk_fetch_startup/time_signal.py interface: jsk_fetch_startup/time_signal.interface icon: jsk_fetch_startup/time_signal.png -timeout: 10 +timeout: 120 plugins: + - name: tweet_notifier_plugin + type: app_notifier/tweet_notifier_plugin + plugin_args: + client_name: /tweet_image_server/tweet + image: true + image_topic_name: /edgetpu_object_detector/output/image + warning: false - name: user_speech_notifier_plugin type: app_notifier/user_speech_notifier_plugin plugin_args: @@ -12,6 +19,8 @@ plugins: warning: false plugin_order: start_plugin_order: + - tweet_notifier_plugin - user_speech_notifier_plugin stop_plugin_order: + - tweet_notifier_plugin - user_speech_notifier_plugin diff --git a/jsk_fetch_robot/jsk_fetch_startup/apps/tweet/tweet.app b/jsk_fetch_robot/jsk_fetch_startup/apps/tweet/tweet.app index da0197d1b9..28d7cc4bf1 100644 --- a/jsk_fetch_robot/jsk_fetch_startup/apps/tweet/tweet.app +++ b/jsk_fetch_robot/jsk_fetch_startup/apps/tweet/tweet.app @@ -1,6 +1,6 @@ display: Fetch tweet platform: fetch -launch: jsk_fetch_startup/tweet.xml +run: jsk_fetch_startup/tweet.l interface: jsk_fetch_startup/tweet.interface icon: jsk_fetch_startup/tweet.png plugins: @@ -8,6 +8,7 @@ plugins: type: app_notifier/user_speech_notifier_plugin plugin_args: client_name: /sound_play + warning: true plugin_order: start_plugin_order: - user_speech_notifier_plugin diff --git a/jsk_fetch_robot/jsk_fetch_startup/apps/undock/undock.app b/jsk_fetch_robot/jsk_fetch_startup/apps/undock/undock.app index da845f0a25..78a4b30891 100644 --- a/jsk_fetch_robot/jsk_fetch_startup/apps/undock/undock.app +++ b/jsk_fetch_robot/jsk_fetch_startup/apps/undock/undock.app @@ -1,5 +1,5 @@ display: Fetch undock platform: fetch -launch: jsk_fetch_startup/undock.xml +run: jsk_fetch_startup/undock.l interface: jsk_fetch_startup/undock.interface icon: jsk_fetch_startup/undock.png diff --git a/jsk_fetch_robot/jsk_fetch_startup/apps/unplug_spot_power_connector/unplug_spot_power_connector.app b/jsk_fetch_robot/jsk_fetch_startup/apps/unplug_spot_power_connector/unplug_spot_power_connector.app new file mode 100644 index 0000000000..680166f454 --- /dev/null +++ b/jsk_fetch_robot/jsk_fetch_startup/apps/unplug_spot_power_connector/unplug_spot_power_connector.app @@ -0,0 +1,75 @@ +display: Unplug Spot Power Connector +platform: fetch +launch: jsk_fetch_startup/unplug_spot_power_connector.xml +interface: jsk_fetch_startup/unplug_spot_power_connector.interface +icon: jsk_fetch_startup/unplug_spot_power_connector.png +plugins: + - name: service_notification_saver_plugin + type: app_notification_saver/service_notification_saver + - name: head_camera_video_recorder_plugin + type: app_recorder/audio_video_recorder_plugin + launch_args: + video_path: /tmp + video_title: unplug_spot_power_connector_head_camera.avi + audio_topic_name: /audio + audio_channels: 1 + audio_sample_rate: 16000 + audio_format: wave + audio_sample_format: S16LE + video_topic_name: /l515_head/color/image_raw + video_height: 1080 + video_width: 1920 + video_framerate: 30 + video_encoding: RGB + - name: panorama_video_recorder_plugin + type: app_recorder/video_recorder_plugin + launch_args: + video_path: /tmp + video_title: unplug_spot_power_connector_panorama.avi + video_topic_name: /dual_fisheye_to_panorama/output + video_fps: 1.0 + - name: result_recorder_plugin + type: app_recorder/result_recorder_plugin + plugin_args: + result_path: /tmp + result_title: unplug_spot_power_connector_result.yaml + - name: gdrive_uploader_plugin + type: app_uploader/gdrive_uploader_plugin + plugin_args: + upload_file_paths: + - /tmp/unplug_spot_power_connector_result.yaml + - /tmp/unplug_spot_power_connector_head_camera.avi + - /tmp/unplug_spot_power_connector_panorama.avi + upload_file_titles: + - unplug_spot_power_connector_result.yaml + - unplug_spot_power_connector_head_camera.avi + - unplug_spot_power_connector_panorama.avi + upload_parents_path: fetch_unplug_spot_power_connector + upload_server_name: /gdrive_server + - name: speech_notifier_plugin + type: app_notifier/speech_notifier_plugin + plugin_args: + client_name: /sound_play + - name: mail_notifier_plugin + type: app_notifier/mail_notifier_plugin + plugin_args: + mail_title: Fetch Unplug Spot Power Connector Demo + use_timestamp_title: true + plugin_arg_yaml: /var/lib/robot/fetch_mail_notifier_plugin.yaml +plugin_order: + start_plugin_order: + - service_notification_saver_plugin + - head_camera_video_recorder_plugin + - panorama_video_recorder_plugin + - result_recorder_plugin + - gdrive_uploader_plugin + - speech_notifier_plugin + - mail_notifier_plugin + stop_plugin_order: + - service_notification_saver_plugin + - head_camera_video_recorder_plugin + - panorama_video_recorder_plugin + - result_recorder_plugin + - gdrive_uploader_plugin + - speech_notifier_plugin + - mail_notifier_plugin diff --git a/jsk_fetch_robot/jsk_fetch_startup/apps/unplug_spot_power_connector/unplug_spot_power_connector.interface b/jsk_fetch_robot/jsk_fetch_startup/apps/unplug_spot_power_connector/unplug_spot_power_connector.interface new file mode 100644 index 0000000000..044105d644 --- /dev/null +++ b/jsk_fetch_robot/jsk_fetch_startup/apps/unplug_spot_power_connector/unplug_spot_power_connector.interface @@ -0,0 +1,2 @@ +published_topics: {} +subscribed_topics: {} diff --git a/jsk_fetch_robot/jsk_fetch_startup/apps/unplug_spot_power_connector/unplug_spot_power_connector.png b/jsk_fetch_robot/jsk_fetch_startup/apps/unplug_spot_power_connector/unplug_spot_power_connector.png new file mode 100644 index 0000000000..3098183bc3 Binary files /dev/null and b/jsk_fetch_robot/jsk_fetch_startup/apps/unplug_spot_power_connector/unplug_spot_power_connector.png differ diff --git a/jsk_fetch_robot/jsk_fetch_startup/apps/unplug_spot_power_connector/unplug_spot_power_connector.xml b/jsk_fetch_robot/jsk_fetch_startup/apps/unplug_spot_power_connector/unplug_spot_power_connector.xml new file mode 100644 index 0000000000..d61fc63f62 --- /dev/null +++ b/jsk_fetch_robot/jsk_fetch_startup/apps/unplug_spot_power_connector/unplug_spot_power_connector.xml @@ -0,0 +1,3 @@ + + + diff --git a/jsk_fetch_robot/jsk_fetch_startup/config/.gitignore b/jsk_fetch_robot/jsk_fetch_startup/config/.gitignore new file mode 100644 index 0000000000..97ed018fbb --- /dev/null +++ b/jsk_fetch_robot/jsk_fetch_startup/config/.gitignore @@ -0,0 +1 @@ +fetch*_dialogflow_hotword.yaml diff --git a/jsk_fetch_robot/jsk_fetch_startup/config/config.bash b/jsk_fetch_robot/jsk_fetch_startup/config/config.bash new file mode 100644 index 0000000000..4f7057cc68 --- /dev/null +++ b/jsk_fetch_robot/jsk_fetch_startup/config/config.bash @@ -0,0 +1,46 @@ +# This file is bash configuration for robot.conf +# This file must be at /var/lib/robot/config.bash + +if [ $(hostname) = 'fetch15' ]; then + export DEFAULT_SPEAKER=13; + export DEFAULT_ENGLISH_SPEAKER=cmu_us_bdl.flitevox; + export DEFAULT_WARNING_SPEAKER=cmu_us_fem.flitevox; + + export USE_BASE_CAMERA_MOUNT=true; + export USE_HEAD_BOX=false; + export USE_HEAD_L515=true; + export USE_INSTA360_STAND=true; + + export RS_SERIAL_NO_T265="925122110450"; + export RS_SERIAL_NO_D435_FRONTRIGHT=""; + export RS_SERIAL_NO_D435_FRONTLEFT=""; + # Disable L515 to reduce fetch's CPU usage + # Use L515 after finding a way to reduce L515 CPU usage like ConnectionBasedTransport + # export RS_SERIAL_NO_L515_HEAD="f0211890"; + export RS_SERIAL_NO_L515_HEAD=""; + + export NETWORK_DEFAULT_WIFI_INTERFACE="wlan0"; + export NETWORK_DEFAULT_ROS_INTERFACE="fetch15"; + export NETWORK_DEFAULT_PROFILE_ID="sanshiro-73B2"; +elif [ $(hostname) = 'fetch1075' ]; then + export DEFAULT_SPEAKER=2; + export DEFAULT_ENGLISH_SPEAKER=cmu_us_slt.flitevox; + export DEFAULT_WARNING_SPEAKER=cmu_us_lnh.flitevox; + + export USE_BASE_CAMERA_MOUNT=false; + export USE_HEAD_BOX=false; + export USE_HEAD_L515=true; + export USE_INSTA360_STAND=true; + + export RS_SERIAL_NO_T265=""; + export RS_SERIAL_NO_D435_FRONTRIGHT=""; + export RS_SERIAL_NO_D435_FRONTLEFT=""; + # Disable L515 to reduce fetch's CPU usage + # Use L515 after finding a way to reduce L515 CPU usage like ConnectionBasedTransport + export RS_SERIAL_NO_L515_HEAD="f0232270"; + #export RS_SERIAL_NO_L515_HEAD=""; + + export NETWORK_DEFAULT_WIFI_INTERFACE="wlan0"; + export NETWORK_DEFAULT_ROS_INTERFACE="fetch1075"; + export NETWORK_DEFAULT_PROFILE_ID="sanshiro-73B2"; +fi diff --git a/jsk_fetch_robot/jsk_fetch_startup/config/config_outside.bash b/jsk_fetch_robot/jsk_fetch_startup/config/config_outside.bash new file mode 100644 index 0000000000..007560b460 --- /dev/null +++ b/jsk_fetch_robot/jsk_fetch_startup/config/config_outside.bash @@ -0,0 +1,12 @@ +# This file is bash configuration for robot.conf +# This file must be at /var/lib/robot/config.bash + +SCRIPT_DIR="$( cd -- "$( dirname -- "${BASH_SOURCE[0]:-$0}"; )" &> /dev/null && pwd 2> /dev/null; )"; +. $SCRIPT_DIR/config.bash + +if [ $(hostname) = 'fetch15' ]; then + export NETWORK_DEFAULT_PROFILE_ID="sanshiro-outside"; +elif [ $(hostname) = 'fetch1075' ]; then + export NETWORK_DEFAULT_ROS_INTERFACE="fetch1075.local"; + export NETWORK_DEFAULT_PROFILE_ID="sanshiro-outside"; +fi diff --git a/jsk_fetch_robot/jsk_fetch_startup/config/dialogflow_hotword.yaml.in b/jsk_fetch_robot/jsk_fetch_startup/config/dialogflow_hotword.yaml.in new file mode 100644 index 0000000000..73714a65a9 --- /dev/null +++ b/jsk_fetch_robot/jsk_fetch_startup/config/dialogflow_hotword.yaml.in @@ -0,0 +1,5 @@ +- ねえねえ +- こんにちわ +- やあ +- @ROBOT_NICKNAME_KANA@ +- @ROBOT_NICKNAME_HIRA@ diff --git a/jsk_fetch_robot/jsk_fetch_startup/config/fetch_analyzers.yaml b/jsk_fetch_robot/jsk_fetch_startup/config/fetch_analyzers.yaml index f4847a4cba..d6b18c8111 100644 --- a/jsk_fetch_robot/jsk_fetch_startup/config/fetch_analyzers.yaml +++ b/jsk_fetch_robot/jsk_fetch_startup/config/fetch_analyzers.yaml @@ -102,7 +102,7 @@ analyzers: path: Head Camera timeout: 5.0 startswith: 'head_camera' - num_items: 2 + num_items: 4 imu: type: diagnostic_aggregator/GenericAnalyzer path: IMU @@ -154,18 +154,6 @@ analyzers: contains: '/audio' timeout: 100 discard_stale: true - head_depth_image: - type: diagnostic_aggregator/GenericAnalyzer - path: HeadDepthImage - contains: '/head_camera/depth/image_raw' - timeout: 100 - discard_stale: true - head_rgb_image: - type: diagnostic_aggregator/GenericAnalyzer - path: HeadRGBImage - contains: '/head_camera/rgb/image_raw' - timeout: 100 - discard_stale: true nodes: type: diagnostic_aggregator/AnalyzerGroup path: Nodes diff --git a/jsk_fetch_robot/jsk_fetch_startup/config/install_cron.sh b/jsk_fetch_robot/jsk_fetch_startup/config/install_cron.sh new file mode 100755 index 0000000000..186b8dc4cc --- /dev/null +++ b/jsk_fetch_robot/jsk_fetch_startup/config/install_cron.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +jsk_fetch_startup=$(builtin cd "`dirname "${BASH_SOURCE[0]}"`"/.. > /dev/null && pwd) + +IFS=':' read -r -a prefix_paths <<< "$CMAKE_PREFIX_PATH" +current_prefix_path="${prefix_paths[0]}" + +set -x + +cd $jsk_fetch_startup/cron_scripts +sudo -u fetch crontab cron_fetch.conf +echo "Set cron jobs for fetch user" +sudo -u root crontab cron_root.conf +echo "Set cron jobs for root user" +set +x diff --git a/jsk_fetch_robot/jsk_fetch_startup/config/install_supervisor.sh b/jsk_fetch_robot/jsk_fetch_startup/config/install_supervisor.sh index 9f77c428b9..6a35d559c0 100755 --- a/jsk_fetch_robot/jsk_fetch_startup/config/install_supervisor.sh +++ b/jsk_fetch_robot/jsk_fetch_startup/config/install_supervisor.sh @@ -8,11 +8,14 @@ current_prefix_path="${prefix_paths[0]}" set -x cd $jsk_fetch_startup/supervisor_scripts -for file in $(ls ./*.conf); do - sudo cp $file /etc/supervisor/conf.d/ - sudo chown root:root /etc/supervisor/conf.d/$file - sudo chmod 644 /etc/supervisor/conf.d/$file - echo "copied $file to /etc/supervisor/conf.d" +for file in $(ls *.conf); do + sudo ln -sf $jsk_fetch_startup/supervisor_scripts/$file /etc/supervisor/conf.d/$file done +sudo supervisorctl reread +# Enable jsk_dstat job to save the csv log under /var/log +sudo ln -sf /home/fetch/Documents/jsk_dstat.csv /var/log/ros/jsk-dstat.csv + +sudo ln -sf $jsk_fetch_startup/config/config.bash /var/lib/robot/config.bash +sudo ln -sf $jsk_fetch_startup/config/config_outside.bash /var/lib/robot/config_outside.bash set +x diff --git a/jsk_fetch_robot/jsk_fetch_startup/config/install_udev.sh b/jsk_fetch_robot/jsk_fetch_startup/config/install_udev.sh index b079e114a4..5e8e1cec43 100755 --- a/jsk_fetch_robot/jsk_fetch_startup/config/install_udev.sh +++ b/jsk_fetch_robot/jsk_fetch_startup/config/install_udev.sh @@ -1,17 +1,12 @@ #!/bin/bash +# 99-edgetpu-accelerator.rules and 99-realsense-libusb.rules are not tracked in jsk_fetch_startup +# because they are installed by apt + jsk_fetch_startup=$(builtin cd "`dirname "${BASH_SOURCE[0]}"`"/.. > /dev/null && pwd) cd $jsk_fetch_startup/udev_rules for file in $(ls *.rules); do - if [ -e /etc/udev/rules.d/$file ]; then - file_bk=$file.$(date "+%Y%m%d_%H%M%S") - sudo cp /etc/udev/rules.d/$file /etc/udev/rules.d/$file_bk - echo "backup /etc/udev/rules.d/$file to /etc/udev/rules.d/$file_bk" - fi - - sudo cp $file /etc/udev/rules.d/ - sudo chown root:root /etc/udev/rules.d/$file - sudo chmod 644 /etc/udev/rules.d/$file - echo -e "copied jsk_fetch_startup/udev_rules/$file to /etc/udev/rules.d/$file\n" + sudo ln -sf $jsk_fetch_startup/udev_rules/$file /etc/udev/rules.d/$file + echo -e "Create symbolic link from jsk_fetch_startup/udev_rules/$file to /etc/udev/rules.d/$file\n" done diff --git a/jsk_fetch_robot/jsk_fetch_startup/config/jsk_startup.rviz b/jsk_fetch_robot/jsk_fetch_startup/config/jsk_startup.rviz index 7d5b36018d..9fa5277bc9 100644 --- a/jsk_fetch_robot/jsk_fetch_startup/config/jsk_startup.rviz +++ b/jsk_fetch_robot/jsk_fetch_startup/config/jsk_startup.rviz @@ -5,7 +5,7 @@ Panels: Property Tree Widget: Expanded: ~ Splitter Ratio: 0.4187380373477936 - Tree Height: 595 + Tree Height: 477 - Class: rviz/Selection Name: Selection - Class: rviz/Tool Properties @@ -27,7 +27,7 @@ Panels: SyncSource: BaseScan - Class: jsk_rviz_plugin/CancelAction Name: CancelAction - Topic: /move_base + Topic: "" topics: - /move_base Preferences: @@ -65,6 +65,11 @@ Visualization Manager: Expand Link Details: false Expand Tree: false Link Tree Style: Links in Alphabetic Order + base_camera_mount: + Alpha: 1 + Show Axes: false + Show Trail: false + Value: true base_link: Alpha: 1 Show Axes: false @@ -80,6 +85,14 @@ Visualization Manager: Show Axes: false Show Trail: false Value: true + d435_front_left_link: + Alpha: 1 + Show Axes: false + Show Trail: false + d435_front_right_link: + Alpha: 1 + Show Axes: false + Show Trail: false elbow_flex_link: Alpha: 1 Show Axes: false @@ -100,6 +113,11 @@ Visualization Manager: Show Axes: false Show Trail: false Value: true + head_box_link: + Alpha: 1 + Show Axes: false + Show Trail: false + Value: true head_camera_depth_frame: Alpha: 1 Show Axes: false @@ -120,6 +138,15 @@ Visualization Manager: Alpha: 1 Show Axes: false Show Trail: false + head_l515_mount_link: + Alpha: 1 + Show Axes: false + Show Trail: false + Value: true + head_l515_virtual_mount_link: + Alpha: 1 + Show Axes: false + Show Trail: false head_pan_link: Alpha: 1 Show Axes: false @@ -130,6 +157,14 @@ Visualization Manager: Show Axes: false Show Trail: false Value: true + insta360_link: + Alpha: 1 + Show Axes: false + Show Trail: false + l515_head_link: + Alpha: 1 + Show Axes: false + Show Trail: false l_gripper_finger_link: Alpha: 1 Show Axes: false @@ -229,7 +264,7 @@ Visualization Manager: Head Length: 0.20000000298023224 Length: 0.30000001192092896 Line Style: Billboards - Line Width: 0.3 + Line Width: 0.30000001192092896 Name: NavigationPath Offset: X: 0 @@ -252,7 +287,7 @@ Visualization Manager: Head Length: 0.20000000298023224 Length: 0.30000001192092896 Line Style: Billboards - Line Width: 0.1 + Line Width: 0.10000000149011612 Name: GlobalPath Offset: X: 0 @@ -317,12 +352,12 @@ Visualization Manager: Class: rviz/Map Color Scheme: costmap Draw Behind: false - Enabled: false + Enabled: true Name: SafeCostMap Topic: /safe_teleop_base/local_costmap/costmap Unreliable: false Use Timestamp: false - Value: false + Value: true - Alpha: 0.3499999940395355 Class: rviz/Map Color Scheme: costmap @@ -374,9 +409,7 @@ Visualization Manager: Enabled: true Invert Rainbow: false Max Color: 255; 255; 255 - Max Intensity: 4096 Min Color: 0; 0; 0 - Min Intensity: 0 Name: BaseScan Position Transformer: XYZ Queue Size: 10 @@ -404,9 +437,7 @@ Visualization Manager: Enabled: true Invert Rainbow: false Max Color: 255; 255; 255 - Max Intensity: 4096 Min Color: 0; 0; 0 - Min Intensity: 0 Name: XtionPointCloud Position Transformer: XYZ Queue Size: 10 @@ -419,19 +450,120 @@ Visualization Manager: Use Fixed Frame: true Use rainbow: true Value: true - - Class: jsk_rviz_plugin/OverlayImage + - Alpha: 1 + Autocompute Intensity Bounds: true + Autocompute Value Bounds: + Max Value: 10 + Min Value: -10 + Value: true + Axis: Z + Channel Name: intensity + Class: rviz/PointCloud2 + Color: 255; 255; 255 + Color Transformer: RGB8 + Decay Time: 0 + Enabled: false + Invert Rainbow: false + Max Color: 255; 255; 255 + Min Color: 0; 0; 0 + Name: HeadL515PointCloud + Position Transformer: XYZ + Queue Size: 10 + Selectable: true + Size (Pixels): 3 + Size (m): 0.009999999776482582 + Style: Flat Squares + Topic: /l515_head/depth/color/points + Unreliable: false + Use Fixed Frame: true + Use rainbow: true + Value: false + - Class: rviz/Group + Displays: + - Class: jsk_rviz_plugin/OverlayImage + Enabled: true + Name: XtionRGB + Topic: /head_camera/rgb/quater/image_rect_color + Value: true + alpha: 0.800000011920929 + height: 128 + keep aspect ratio: true + left: 10 + overwrite alpha value: false + top: 10 + transport hint: raw + width: 320 + - Class: jsk_rviz_plugin/OverlayImage + Enabled: false + Name: XtionRGBHumanPoseEstimator + Topic: /edgetpu_human_pose_estimator/output/image + Value: false + alpha: 0.800000011920929 + height: 128 + keep aspect ratio: true + left: 10 + overwrite alpha value: false + top: 10 + transport hint: raw + width: 320 + - Class: jsk_rviz_plugin/OverlayImage + Enabled: false + Name: XtionRGBObjectDetector + Topic: /edgetpu_human_pose_estimator/output/image + Value: false + alpha: 0.800000011920929 + height: 128 + keep aspect ratio: true + left: 10 + overwrite alpha value: false + top: 10 + transport hint: raw + width: 320 Enabled: true Name: XtionRGB - Topic: /head_camera/rgb/quater/image_rect_color - Value: true - alpha: 0.800000011920929 - height: 128 - keep aspect ratio: true - left: 10 - overwrite alpha value: false - top: 10 - transport hint: raw - width: 320 + - Class: rviz/Group + Displays: + - Class: jsk_rviz_plugin/OverlayImage + Enabled: true + Name: PanoramaImage + Topic: /dual_fisheye_to_panorama/quater/output + Value: true + alpha: 0.800000011920929 + height: 128 + keep aspect ratio: true + left: 340 + overwrite alpha value: false + top: 10 + transport hint: raw + width: 480 + - Class: jsk_rviz_plugin/OverlayImage + Enabled: false + Name: PanoramaHumanPoseEstimator + Topic: /edgetpu_panorama_human_pose_estimator/output/image + Value: false + alpha: 0.800000011920929 + height: 128 + keep aspect ratio: true + left: 340 + overwrite alpha value: false + top: 10 + transport hint: raw + width: 480 + - Class: jsk_rviz_plugin/OverlayImage + Enabled: false + Name: PanoramaObjectDetector + Topic: /edgetpu_panorama_object_detector/output/image + Value: false + alpha: 0.800000011920929 + height: 128 + keep aspect ratio: true + left: 340 + overwrite alpha value: false + top: 10 + transport hint: raw + width: 480 + Enabled: true + Name: PanoramaImage Enabled: true Global Options: Background Color: 48; 48; 48 @@ -472,23 +604,25 @@ Visualization Manager: X: 0 Y: 0 Z: 0 - Focal Shape Fixed Size: true + Focal Shape Fixed Size: false Focal Shape Size: 0.05000000074505806 Invert Z Axis: false Name: Current View Near Clip Distance: 0.009999999776482582 - Pitch: 0.7897970676422119 + Pitch: 0.7853981852531433 Target Frame: base_link Value: Orbit (rviz) - Yaw: 5.593582630157471 + Yaw: 0.7853981852531433 Saved: ~ Window Geometry: + CancelAction: + collapsed: false Displays: collapsed: false - Height: 1052 + Height: 1025 Hide Left Dock: false Hide Right Dock: true - QMainWindow State: 000000ff00000000fd0000000400000000000001f80000037efc020000000afb0000001200530065006c0065006300740069006f006e00000001e10000009b0000005c00fffffffb0000001e0054006f006f006c002000500072006f0070006500720074006900650073020000019b000001df00000185000000a3fb000000120056006900650077007300200054006f006f02000001df000002110000018500000122fb000000200054006f006f006c002000500072006f0070006500720074006900650073003203000002880000011d000002210000017afb000000100044006900730070006c006100790073010000003d0000037e000000c900fffffffb00000018004b0069006e00650063007400430061006d0065007200610000000373000000160000000000000000fb0000002000730065006c0065006300740069006f006e00200062007500660066006500720200000138000000aa0000023a00000294fb00000014005700690064006500530074006500720065006f02000000e6000000d2000003ee0000030bfb0000000c004b0069006e0065006300740200000186000001060000030c00000261fb00000018004e006100720072006f007700430061006d0065007200610000000244000001460000000000000000000000010000010f00000463fc0200000003fb0000001e0054006f006f006c002000500072006f00700065007200740069006500730100000041000000780000000000000000fb0000000a00560069006500770073000000002800000463000000a400fffffffb0000001200530065006c0065006300740069006f006e010000025a000000b200000000000000000000000200000780000000a9fc0100000001fb0000000a00560069006500770073030000004e00000080000002e100000197000000030000073d0000003efc0100000002fb0000000800540069006d006501000000000000073d000002eb00fffffffb0000000800540069006d006501000000000000045000000000000000000000053f0000037e00000004000000040000000800000008fc0000000100000002000000010000000a0054006f006f006c00730100000000ffffffff0000000000000000 + QMainWindow State: 000000ff00000000fd0000000400000000000001f800000361fc020000000bfb0000001200530065006c0065006300740069006f006e00000001e10000009b0000005c00fffffffb0000001e0054006f006f006c002000500072006f0070006500720074006900650073020000019b000001df00000185000000a3fb000000120056006900650077007300200054006f006f02000001df000002110000018500000122fb000000200054006f006f006c002000500072006f0070006500720074006900650073003203000002880000011d000002210000017afb000000100044006900730070006c006100790073010000003e00000269000000ca00fffffffb00000018004b0069006e00650063007400430061006d0065007200610000000373000000160000000000000000fb0000002000730065006c0065006300740069006f006e00200062007500660066006500720200000138000000aa0000023a00000294fb00000014005700690064006500530074006500720065006f02000000e6000000d2000003ee0000030bfb0000000c004b0069006e0065006300740200000186000001060000030c00000261fb00000018004e006100720072006f007700430061006d0065007200610000000244000001460000000000000000fb0000001800430061006e00630065006c0041006300740069006f006e01000002ad000000f20000008200ffffff000000010000010f00000463fc0200000003fb0000001e0054006f006f006c002000500072006f00700065007200740069006500730100000041000000780000000000000000fb0000000a00560069006500770073000000002800000463000000a600fffffffb0000001200530065006c0065006300740069006f006e010000025a000000b200000000000000000000000200000780000000a9fc0100000001fb0000000a00560069006500770073030000004e00000080000002e10000019700000003000007800000003efc0100000002fb0000000800540069006d00650100000000000007800000026200fffffffb0000000800540069006d00650100000000000004500000000000000000000005820000036100000004000000040000000800000008fc0000000100000002000000010000000a0054006f006f006c00730100000000ffffffff0000000000000000 Selection: collapsed: false Time: @@ -497,6 +631,6 @@ Window Geometry: collapsed: false Views: collapsed: true - Width: 1853 - X: 67 + Width: 1920 + X: 0 Y: 27 diff --git a/jsk_fetch_robot/jsk_fetch_startup/config/sanity_targets.yaml b/jsk_fetch_robot/jsk_fetch_startup/config/sanity_targets.yaml index 6b8ce4ff93..24a3521055 100644 --- a/jsk_fetch_robot/jsk_fetch_startup/config/sanity_targets.yaml +++ b/jsk_fetch_robot/jsk_fetch_startup/config/sanity_targets.yaml @@ -2,8 +2,6 @@ topics: - /audio - /edgetpu_human_pose_estimator/output/image/compressed - /edgetpu_object_detector/output/image/compressed - - /head_camera/depth/image_raw - - /head_camera/rgb/image_raw nodes: - /head_camera/head_camera_nodelet_manager diff --git a/jsk_fetch_robot/jsk_fetch_startup/config/view_model.rviz b/jsk_fetch_robot/jsk_fetch_startup/config/view_model.rviz new file mode 100644 index 0000000000..e8978465a4 --- /dev/null +++ b/jsk_fetch_robot/jsk_fetch_startup/config/view_model.rviz @@ -0,0 +1,426 @@ +Panels: + - Class: rviz/Displays + Help Height: 78 + Name: Displays + Property Tree Widget: + Expanded: ~ + Splitter Ratio: 0.5 + Tree Height: 728 + - Class: rviz/Selection + Name: Selection + - Class: rviz/Tool Properties + Expanded: + - /2D Pose Estimate1 + - /2D Nav Goal1 + - /Publish Point1 + Name: Tool Properties + Splitter Ratio: 0.5886790156364441 + - Class: rviz/Views + Expanded: + - /Current View1 + Name: Views + Splitter Ratio: 0.5 + - Class: rviz/Time + Experimental: false + Name: Time + SyncMode: 0 + SyncSource: "" +Preferences: + PromptSaveOnExit: true +Toolbars: + toolButtonStyle: 2 +Visualization Manager: + Class: "" + Displays: + - Alpha: 0.5 + Cell Size: 1 + Class: rviz/Grid + Color: 160; 160; 164 + Enabled: true + Line Style: + Line Width: 0.029999999329447746 + Value: Lines + Name: Grid + Normal Cell Count: 0 + Offset: + X: 0 + Y: 0 + Z: 0 + Plane: XY + Plane Cell Count: 10 + Reference Frame: + Value: true + - Alpha: 0.5 + Class: rviz/RobotModel + Collision Enabled: false + Enabled: true + Links: + All Links Enabled: true + Expand Joint Details: false + Expand Link Details: false + Expand Tree: false + Link Tree Style: Links in Alphabetic Order + base_camera_mount: + Alpha: 1 + Show Axes: false + Show Trail: false + Value: true + base_link: + Alpha: 1 + Show Axes: false + Show Trail: false + Value: true + bellows_link: + Alpha: 1 + Show Axes: false + Show Trail: false + Value: true + bellows_link2: + Alpha: 1 + Show Axes: false + Show Trail: false + Value: true + d435_front_left_link: + Alpha: 1 + Show Axes: false + Show Trail: false + d435_front_right_link: + Alpha: 1 + Show Axes: false + Show Trail: false + elbow_flex_link: + Alpha: 1 + Show Axes: false + Show Trail: false + Value: true + estop_link: + Alpha: 1 + Show Axes: false + Show Trail: false + Value: true + forearm_roll_link: + Alpha: 1 + Show Axes: false + Show Trail: false + Value: true + gripper_link: + Alpha: 1 + Show Axes: false + Show Trail: false + Value: true + head_box_link: + Alpha: 1 + Show Axes: false + Show Trail: false + Value: true + head_camera_depth_frame: + Alpha: 1 + Show Axes: false + Show Trail: false + head_camera_depth_optical_frame: + Alpha: 1 + Show Axes: false + Show Trail: false + head_camera_link: + Alpha: 1 + Show Axes: false + Show Trail: false + head_camera_rgb_frame: + Alpha: 1 + Show Axes: false + Show Trail: false + head_camera_rgb_optical_frame: + Alpha: 1 + Show Axes: false + Show Trail: false + head_l515_mount_link: + Alpha: 1 + Show Axes: false + Show Trail: false + Value: true + head_l515_virtual_mount_link: + Alpha: 1 + Show Axes: false + Show Trail: false + head_pan_link: + Alpha: 1 + Show Axes: false + Show Trail: false + Value: true + head_tilt_link: + Alpha: 1 + Show Axes: false + Show Trail: false + Value: true + insta360_link: + Alpha: 1 + Show Axes: false + Show Trail: false + l515_head_link: + Alpha: 1 + Show Axes: false + Show Trail: false + l_gripper_finger_link: + Alpha: 1 + Show Axes: false + Show Trail: false + Value: true + l_wheel_link: + Alpha: 1 + Show Axes: false + Show Trail: false + Value: true + laser_link: + Alpha: 1 + Show Axes: false + Show Trail: false + Value: true + r_gripper_finger_link: + Alpha: 1 + Show Axes: false + Show Trail: false + Value: true + r_wheel_link: + Alpha: 1 + Show Axes: false + Show Trail: false + Value: true + shoulder_lift_link: + Alpha: 1 + Show Axes: false + Show Trail: false + Value: true + shoulder_pan_link: + Alpha: 1 + Show Axes: false + Show Trail: false + Value: true + torso_fixed_link: + Alpha: 1 + Show Axes: false + Show Trail: false + Value: true + torso_lift_link: + Alpha: 1 + Show Axes: false + Show Trail: false + Value: true + upperarm_roll_link: + Alpha: 1 + Show Axes: false + Show Trail: false + Value: true + wrist_flex_link: + Alpha: 1 + Show Axes: false + Show Trail: false + Value: true + wrist_roll_link: + Alpha: 1 + Show Axes: false + Show Trail: false + Value: true + Name: RobotModel + Robot Description: robot_description + TF Prefix: "" + Update Interval: 0 + Value: true + Visual Enabled: true + - Class: rviz/TF + Enabled: true + Frame Timeout: 15 + Frames: + All Enabled: true + base_camera_mount: + Value: true + base_link: + Value: true + bellows_link: + Value: true + bellows_link2: + Value: true + d435_front_left_link: + Value: true + d435_front_right_link: + Value: true + elbow_flex_link: + Value: true + estop_link: + Value: true + forearm_roll_link: + Value: true + gripper_link: + Value: true + head_box_link: + Value: true + head_camera_depth_frame: + Value: true + head_camera_depth_optical_frame: + Value: true + head_camera_link: + Value: true + head_camera_rgb_frame: + Value: true + head_camera_rgb_optical_frame: + Value: true + head_l515_mount_link: + Value: true + head_l515_virtual_mount_link: + Value: true + head_pan_link: + Value: true + head_tilt_link: + Value: true + insta360_link: + Value: true + l515_head_link: + Value: true + l_gripper_finger_link: + Value: true + l_wheel_link: + Value: true + laser_link: + Value: true + r_gripper_finger_link: + Value: true + r_wheel_link: + Value: true + shoulder_lift_link: + Value: true + shoulder_pan_link: + Value: true + torso_fixed_link: + Value: true + torso_lift_link: + Value: true + upperarm_roll_link: + Value: true + wrist_flex_link: + Value: true + wrist_roll_link: + Value: true + Marker Scale: 0.5 + Name: TF + Show Arrows: true + Show Axes: true + Show Names: true + Tree: + base_link: + base_camera_mount: + {} + d435_front_left_link: + {} + d435_front_right_link: + {} + estop_link: + {} + l_wheel_link: + {} + laser_link: + {} + r_wheel_link: + {} + torso_fixed_link: + {} + torso_lift_link: + bellows_link: + {} + bellows_link2: + {} + head_pan_link: + head_box_link: + {} + head_tilt_link: + head_camera_link: + head_camera_depth_frame: + head_camera_depth_optical_frame: + {} + head_camera_rgb_frame: + head_camera_rgb_optical_frame: + {} + head_l515_virtual_mount_link: + head_l515_mount_link: + l515_head_link: + {} + insta360_link: + {} + shoulder_pan_link: + shoulder_lift_link: + upperarm_roll_link: + elbow_flex_link: + forearm_roll_link: + wrist_flex_link: + wrist_roll_link: + gripper_link: + l_gripper_finger_link: + {} + r_gripper_finger_link: + {} + Update Interval: 0 + Value: true + Enabled: true + Global Options: + Background Color: 48; 48; 48 + Default Light: true + Fixed Frame: base_link + Frame Rate: 30 + Name: root + Tools: + - Class: rviz/Interact + Hide Inactive Objects: true + - Class: rviz/MoveCamera + - Class: rviz/Select + - Class: rviz/FocusCamera + - Class: rviz/Measure + - Class: rviz/SetInitialPose + Theta std deviation: 0.2617993950843811 + Topic: /initialpose + X std deviation: 0.5 + Y std deviation: 0.5 + - Class: rviz/SetGoal + Topic: /move_base_simple/goal + - Class: rviz/PublishPoint + Single click: true + Topic: /clicked_point + Value: true + Views: + Current: + Class: rviz/Orbit + Distance: 4.618305206298828 + Enable Stereo Rendering: + Stereo Eye Separation: 0.05999999865889549 + Stereo Focal Distance: 1 + Swap Stereo Eyes: false + Value: false + Focal Point: + X: 0 + Y: 0 + Z: 0 + Focal Shape Fixed Size: true + Focal Shape Size: 0.05000000074505806 + Invert Z Axis: false + Name: Current View + Near Clip Distance: 0.009999999776482582 + Pitch: 0.564796507358551 + Target Frame: + Value: Orbit (rviz) + Yaw: 1.5854246616363525 + Saved: ~ +Window Geometry: + Displays: + collapsed: false + Height: 1025 + Hide Left Dock: false + Hide Right Dock: false + QMainWindow State: 000000ff00000000fd00000004000000000000015600000363fc0200000008fb0000001200530065006c0065006300740069006f006e00000001e10000009b0000005c00fffffffb0000001e0054006f006f006c002000500072006f007000650072007400690065007302000001ed000001df00000185000000a3fb000000120056006900650077007300200054006f006f02000001df000002110000018500000122fb000000200054006f006f006c002000500072006f0070006500720074006900650073003203000002880000011d000002210000017afb000000100044006900730070006c006100790073010000003d00000363000000c900fffffffb0000002000730065006c0065006300740069006f006e00200062007500660066006500720200000138000000aa0000023a00000294fb00000014005700690064006500530074006500720065006f02000000e6000000d2000003ee0000030bfb0000000c004b0069006e0065006300740200000186000001060000030c00000261000000010000010f00000363fc0200000003fb0000001e0054006f006f006c002000500072006f00700065007200740069006500730100000041000000780000000000000000fb0000000a00560069006500770073010000003d00000363000000a400fffffffb0000001200530065006c0065006300740069006f006e010000025a000000b200000000000000000000000200000490000000a9fc0100000001fb0000000a00560069006500770073030000004e00000080000002e10000019700000003000007800000003efc0100000002fb0000000800540069006d0065010000000000000780000002eb00fffffffb0000000800540069006d006501000000000000045000000000000000000000050f0000036300000004000000040000000800000008fc0000000100000002000000010000000a0054006f006f006c00730100000000ffffffff0000000000000000 + Selection: + collapsed: false + Time: + collapsed: false + Tool Properties: + collapsed: false + Views: + collapsed: false + Width: 1920 + X: 0 + Y: 27 diff --git a/jsk_fetch_robot/jsk_fetch_startup/config/warning_blacklist.yaml b/jsk_fetch_robot/jsk_fetch_startup/config/warning_blacklist.yaml new file mode 100644 index 0000000000..54dc6a28f6 --- /dev/null +++ b/jsk_fetch_robot/jsk_fetch_startup/config/warning_blacklist.yaml @@ -0,0 +1,15 @@ +blacklist: + - name: "/CPU/CPU Usage/my_machine CPU Usage" + - name: "/Other/amcl: Standard deviation" + - name: "/Other/jsk_joy_node: Joystick Driver Status" + - name: "/Other/l515_head .*realsense2_camera_.*: Frequency Status" + - name: "/Other/rosserial_python" + - name: "/Peripherals/PS3 Controller" + - name: "/Sensors/IMU/IMU.*" + - name: "/SoundPlay/sound_play.*" +run_stop_blacklist: + - name: "/Motor Control Boards/.*_(mcb|breaker)" + - name: "/System/Mainboard/Mainboard" + message: "Runstop pressed" + - name: "/Breakers/.*" + message: "Disabled." diff --git a/jsk_fetch_robot/jsk_fetch_startup/cron_scripts/cron_certbot.conf b/jsk_fetch_robot/jsk_fetch_startup/cron_scripts/cron_certbot.conf new file mode 100644 index 0000000000..8c7cc3ea3b --- /dev/null +++ b/jsk_fetch_robot/jsk_fetch_startup/cron_scripts/cron_certbot.conf @@ -0,0 +1 @@ +0 0 1 Jan,Apr,Jul,Oct * bash -c ". /home/fetch/ros/melodic/devel/setup.bash && systemctl stop haproxy && certbot renew -v --standalone --renew-hook \"$(rospack find jsk_fetch_startup)/scripts/certbot_renewhook.sh\" >> /var/log/certbot_renewal.log" diff --git a/jsk_fetch_robot/jsk_fetch_startup/cron_scripts/cron_fetch.conf b/jsk_fetch_robot/jsk_fetch_startup/cron_scripts/cron_fetch.conf new file mode 100644 index 0000000000..03fadaf878 --- /dev/null +++ b/jsk_fetch_robot/jsk_fetch_startup/cron_scripts/cron_fetch.conf @@ -0,0 +1,2 @@ +0 3 * * * bash -c ". /home/fetch/ros/melodic/devel/setup.bash && rosrun jsk_fetch_startup update_workspace.sh &> /home/fetch/ros/melodic/update_workspace.log" +0 5 * * * bash -c ". /home/fetch/ros/melodic/devel/setup.bash && rosrun jsk_fetch_startup storage_warning.sh &> /home/fetch/ros/melodic/storage_warning.log" diff --git a/jsk_fetch_robot/jsk_fetch_startup/cron_scripts/cron_root.conf b/jsk_fetch_robot/jsk_fetch_startup/cron_scripts/cron_root.conf new file mode 100644 index 0000000000..da33972f7e --- /dev/null +++ b/jsk_fetch_robot/jsk_fetch_startup/cron_scripts/cron_root.conf @@ -0,0 +1 @@ +0 4 * * * /sbin/shutdown -r now diff --git a/jsk_fetch_robot/jsk_fetch_startup/data/burnable.png b/jsk_fetch_robot/jsk_fetch_startup/data/burnable.png new file mode 100644 index 0000000000..6b00521962 Binary files /dev/null and b/jsk_fetch_robot/jsk_fetch_startup/data/burnable.png differ diff --git a/jsk_fetch_robot/jsk_fetch_startup/data/icmark.png b/jsk_fetch_robot/jsk_fetch_startup/data/icmark.png new file mode 100644 index 0000000000..125b739436 Binary files /dev/null and b/jsk_fetch_robot/jsk_fetch_startup/data/icmark.png differ diff --git a/jsk_fetch_robot/jsk_fetch_startup/data/plastic.png b/jsk_fetch_robot/jsk_fetch_startup/data/plastic.png new file mode 100644 index 0000000000..e1df1b97aa Binary files /dev/null and b/jsk_fetch_robot/jsk_fetch_startup/data/plastic.png differ diff --git a/jsk_fetch_robot/jsk_fetch_startup/euslisp/navigation-utils.l b/jsk_fetch_robot/jsk_fetch_startup/euslisp/navigation-utils.l index 9c3f9d4417..7134603ce2 100644 --- a/jsk_fetch_robot/jsk_fetch_startup/euslisp/navigation-utils.l +++ b/jsk_fetch_robot/jsk_fetch_startup/euslisp/navigation-utils.l @@ -10,6 +10,7 @@ (ros::load-ros-manifest "jsk_robot_startup") (ros::load-ros-manifest "jsk_recognition_msgs") (ros::load-ros-manifest "power_msgs") +(ros::load-ros-manifest "sensor_msgs") (defparameter *dock-action* nil) (defparameter *undock-action* nil) @@ -117,7 +118,7 @@ (simple-dock)) -(defun undock () +(defun undock (&key (rotate-in-place nil)) (unless *undock-action* (setq *undock-action* (instance ros::simple-action-client :init @@ -126,14 +127,45 @@ (ros::ros-error "/undock action server is not started") (return-from undock nil)) (send *undock-action* :send-goal - (instance fetch_auto_dock_msgs::UndockActionGoal :init)) + (instance fetch_auto_dock_msgs::UndockActionGoal :init + :goal (instance fetch_auto_dock_msgs::UndockGoal :rotate_in_place rotate-in-place))) (unless (send *undock-action* :wait-for-result :timeout 60) (ros::ros-error "No result returned from /undock action server") (return-from undock nil)) (send (send *undock-action* :get-result) :undocked)) +(defun wait-until-is-charging (&key (timeout 10)) + """ + Wait for updating battery charging state especially when robots dock. + Args: + - key + timeout [sec]: Set waiting time for updating /battery_state topic + + ;; If /battery_state is subscribed before /battery_state becomes true + ;; while dock succeeds, the result will not be correct, + ;; so wait for a certain time when docking. + """ + (let* ((msg nil) + (is-charging nil) + (duration 0) + (start-time (send (ros::time-now) :sec))) + (while (not is-charging) + (when (> duration timeout) + (ros::ros-warn "Skip waiting for charging state because of timeout") + (return-from wait-until-is-charging :timeout)) + (setq msg (one-shot-subscribe "/battery_state" power_msgs::BatteryState + :timeout 1000)) + (if msg (setq is-charging (send msg :is_charging))) + (setq duration (- (send (ros::time-now) :sec) start-time))) + :charging)) (defun get-battery-charging-state (&key (timeout 1500)) + """ + Get battery charging state + Args: + - key + timeout: Set waiting time for topic. + """ (let* ((msg (one-shot-subscribe "/battery_state" power_msgs::batterystate :timeout timeout)) (is-charging (if msg (send msg :is_charging)))) ;; You may fail to subscribe /battery_state @@ -141,7 +173,6 @@ (if (not msg) (return-from get-battery-charging-state nil)) (if is-charging :charging :discharging))) - (defun go-to-spot (name &key (relative-pos nil) (relative-rot nil) (undock-rotate nil) (clear-costmap t)) "Move the robot to the spot defined in /spots_marker_array topic. The reason for using relative-pos and relative-rot instead of relative-coords is that it is easier to understand if relative-pos and relative-rot are specified in the different coords (specifically, world (map) and local (spot) coords respectively). For detail, see https://github.com/jsk-ros-pkg/jsk_robot/pull/1458#pullrequestreview-1039654868 Args: @@ -169,10 +200,7 @@ Args: (return-from go-to-spot-undock t)) (if (equal battery-charging-state :charging) (progn - (setq undock-success (auto-undock :n-trial 3)) - ;; rotate after undock - (if (and undock-success undock-rotate) - (send *ri* :go-pos-unsafe 0 0 180))) + (setq undock-success (auto-undock :n-trial 3 :rotate-in-place undock-rotate))) (return-from go-to-spot-undock t)) (if (not undock-success) (progn @@ -202,14 +230,14 @@ Args: success)) -(defun auto-undock (&key (n-trial 1)) +(defun auto-undock (&key (n-trial 1) (rotate-in-place nil)) (let ((success nil)) (unless (boundp '*ri*) (require :fetch-interface "package://fetcheus/fetch-interface.l") (fetch-init)) (dotimes (i n-trial) (ros::ros-info "trying to do undock.") - (setq success (undock)) + (setq success (undock :rotate-in-place rotate-in-place)) (when success (return-from auto-undock success))) (if (not success) (let ((enable-request (instance power_msgs::BreakerCommandRequest :init :enable t)) @@ -390,6 +418,35 @@ Args: (format nil "~A is found" label-names)) label-names))) +(defun notify-co2 (&key (location "kitchen")) + (let* ((msg (one-shot-subscribe "/eco2" std_msgs::UInt16 + :timeout 3000))) + (when msg + (ros::ros-info + (format nil "Notify app that co2 concentration is measured.")) + (notify-app "CO2 concentration" + (ros::time-now) + location + (format nil "CO2 concentration is ~A ppm" (send msg :data)))))) + +(defun notify-trashcan-occupancy (&key (location "kitchen")) + (let* ((msg (one-shot-subscribe "/trashbin_occupancy_detector/container/occupancies" + jsk_recognition_msgs::BoundingBoxArray + :timeout 3000)) + (occupancy (if msg (send (elt (send msg :boxes) 0) :value))) + (notify-text (if occupancy (if (> occupancy 1.0) + "Trashcan is full." + "Trashcan is not full.")))) + (when occupancy + (ros::ros-info + (format nil "Notify app that the occupancy of trash can is measured. ~A." occupancy)) + (notify-app "trashcan occupancy" + (ros::time-now) + location + (format nil "~A Trashcan occupancy is ~A" + notify-text + occupancy))))) + (defun inspect-kitchen (&key (tweet t)) (report-move-to-sink-front-success) (if tweet @@ -398,6 +455,7 @@ Args: (tweet-string "I took a photo at 73B2 Kitchen stove." :warning-time 3 :with-image "/edgetpu_object_detector/output/image" :speak t) (notify-recognition :location "kitchen stove") + (notify-co2 :location "kitchen stove") (take-photo "kitchen_stove.jpg") (send *ri* :go-pos-unsafe 0 0 -45) ;; sink @@ -504,7 +562,7 @@ Args: (ros::publish "/photo_taken" img))))) (defun inspect-desk-back (&key (tweet t)) - (report-move-to-tv-desk) + (report-move-to-desk-back) (send *fetch* :angle-vector #f(21.5684 75.5832 80.1877 -11.4819 93.608 -0.04749 95.2016 -0.072829 -1.45585 10.8727)) (send *ri* :angle-vector-raw (send *fetch* :angle-vector) 3000 :head-controller) (send *ri* :wait-interpolation) @@ -516,7 +574,7 @@ Args: (ros::publish "/photo_taken" img))))) (defun inspect-desk-front (&key (tweet t)) - (report-move-to-tv-desk) + (report-move-to-desk-front) (send *fetch* :angle-vector #f(21.5761 75.5173 80.2097 -11.5478 93.6519 -0.04749 95.1796 -0.006954 -1.11597 10.8288)) (send *ri* :angle-vector-raw (send *fetch* :angle-vector) 3000 :head-controller) (send *ri* :wait-interpolation) @@ -528,7 +586,7 @@ Args: (ros::publish "/photo_taken" img))))) (defun inspect-kitchen-door-front (&key (tweet t)) - (report-move-to-tv-desk) + (report-move-to-kitchen-door-front) (send *fetch* :angle-vector #f(21.5608 75.5612 80.2316 -11.5039 93.586 -0.04749 95.1576 -0.050857 3.17796 16.3219)) (send *ri* :angle-vector-raw (send *fetch* :angle-vector) 3000 :head-controller) (send *ri* :wait-interpolation) @@ -559,6 +617,7 @@ Args: (ros::publish "/photo_taken" img)) (take-photo "trashcan_inside.jpg") (notify-recognition :location "trash cans inside") + (notify-trashcan-occupancy :location "trash can") (send *ri* :go-pos-unsafe -0.2 0 0)) (progn (notify-recognition :location "trash cans")))) @@ -620,7 +679,8 @@ Args: ;; change the inflation_radius (restore-params) (send-kitchen-mail) - (setq success-battery-charging (equal (get-battery-charging-state) :charging)) + (setq success-battery-charging (progn (wait-until-is-charging) + (equal (get-battery-charging-state) :charging))) (and success-go-to-kitchen success-auto-dock success-battery-charging))) @@ -667,13 +727,15 @@ Args: (:move-to-sink-front -> :inspect-kitchen) (:move-to-sink-front !-> :report-move-to-sink-front-failure) ;;(:inspect-kitchen -> :auto-dock) - ;;(:report-move-to-sink-front-failure -> :auto-dock) + (:report-move-to-sink-front-failure -> :auto-dock) (:inspect-kitchen -> :move-to-trashcan-front) (:move-to-trashcan-front -> :inspect-trashcan) (:move-to-trashcan-front !-> :report-move-to-trashcan-front-failure) (:inspect-trashcan -> :auto-dock) (:report-move-to-trashcan-front-failure -> :auto-dock) (:auto-dock -> :room-light-off) + (:auto-dock !-> :auto-dock-failure) + (:auto-dock-failure -> :room-light-off) (:room-light-off -> :finish) (:finish -> t) (:finish !-> nil)) @@ -859,11 +921,11 @@ Args: success))) (:inspect-kitchen '(lambda (userdata) - (let ((label-names (notify-recognition :location "kitchen")) - (notify-text (if label-names (format nil "~Aがあったよ" label-names) ""))) - (inspect-kitchen :tweet (cdr (assoc 'tweet userdata))) - (set-alist 'description (format nil "キッチンの様子を見たよ。~A" notify-text) userdata)) - (set-alist 'image (remove #\newline (base64encode (send *image* :serialize))) userdata) + (let* ((label-names (notify-recognition :location "kitchen")) + (notify-text (if label-names (format nil "~Aがあったよ" label-names) ""))) + (inspect-kitchen :tweet (cdr (assoc 'tweet userdata))) + (set-alist 'description (format nil "キッチンの様子を見たよ。~A" notify-text) userdata)) + (set-alist 'image (remove #\newline (base64encode (send *image* :serialize))) userdata) t)) (:report-move-to-sink-front-failure '(lambda (userdata) diff --git a/jsk_fetch_robot/jsk_fetch_startup/launch/devices/realsense_nodelet.launch.xml b/jsk_fetch_robot/jsk_fetch_startup/launch/devices/realsense_nodelet.launch.xml index a72dd3f2d1..c5993ed682 100644 --- a/jsk_fetch_robot/jsk_fetch_startup/launch/devices/realsense_nodelet.launch.xml +++ b/jsk_fetch_robot/jsk_fetch_startup/launch/devices/realsense_nodelet.launch.xml @@ -3,6 +3,8 @@ This launch file is copied from realsense2_camera in realsense_ros https://github.com/IntelRealSense/realsense-ros and then modified And it is originally distributed under Apache-2.0 License --> + + @@ -10,6 +12,7 @@ + @@ -101,11 +104,12 @@ + diff --git a/jsk_fetch_robot/jsk_fetch_startup/launch/fetch.launch b/jsk_fetch_robot/jsk_fetch_startup/launch/fetch.launch index a09c95a3c8..16dea4af56 100644 --- a/jsk_fetch_robot/jsk_fetch_startup/launch/fetch.launch +++ b/jsk_fetch_robot/jsk_fetch_startup/launch/fetch.launch @@ -1,11 +1,23 @@ - - + - + + + + + + + + + + + + + + @@ -22,10 +34,15 @@ - + + + + + + @@ -33,6 +50,8 @@ + + + base_camera_mount:=$(arg use_base_camera_mount) head_box:=$(arg use_head_box) + head_l515:=$(arg use_head_l515) insta360_stand:=$(arg insta360_stand)" /> @@ -166,6 +186,15 @@ + + + + + + + + diff --git a/jsk_fetch_robot/jsk_fetch_startup/launch/fetch_auto_dock.xml b/jsk_fetch_robot/jsk_fetch_startup/launch/fetch_auto_dock.xml new file mode 100644 index 0000000000..be7b25f86c --- /dev/null +++ b/jsk_fetch_robot/jsk_fetch_startup/launch/fetch_auto_dock.xml @@ -0,0 +1,14 @@ + + + + + duration_timeout_undock: 10.0 + duration_timeout_preorientation: 20.0 + + + + + diff --git a/jsk_fetch_robot/jsk_fetch_startup/launch/fetch_bringup.launch b/jsk_fetch_robot/jsk_fetch_startup/launch/fetch_bringup.launch index 41f2e55e75..a587c70d13 100644 --- a/jsk_fetch_robot/jsk_fetch_startup/launch/fetch_bringup.launch +++ b/jsk_fetch_robot/jsk_fetch_startup/launch/fetch_bringup.launch @@ -1,18 +1,40 @@ - - - + + + + + + + + + + + + + + + + + + + + + + + + + @@ -21,17 +43,17 @@ + respawn="true" output="screen" if="$(arg battery_warning)"> duration: 180 - charge_level_threshold: 80.0 + charge_level_threshold: 65.0 shutdown_level_threshold: 60.0 charge_level_step: 10.0 volume: 1.0 - + lang: japanese volume: 0.5 @@ -39,7 +61,7 @@ - + @@ -56,16 +78,20 @@ + respawn="true" if="$(arg launch_sound_play)"> + + default_voice: $(arg default_english_speaker) + plugin: sound_play/flite_plugin + + - - - + + @@ -74,14 +100,15 @@ - + + name="diag_agg" args="CPP" output="screen" + clear_params="true" > @@ -96,7 +123,7 @@ - + @@ -109,76 +136,116 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - - - + + - + - + interface_name: wlan0 - - - - - - - - - - - - - - - - - - - - - tts_action_names: - - sound_play - - robotsound_jp - + + + + + + + + + + + + + + + + + + + + + + tts_action_names: + - sound_play + - robotsound_jp + + + + + + + + + default_select: speech_to_text_google + patient: 6 + + - - - - - - - default_select: speech_to_text_google - patient: 6 - - @@ -243,6 +310,9 @@ + + luminance_threshold: 70 + @@ -277,8 +347,40 @@ + + + + + run_stop_topic: robot_state + run_stop_condition: "m.runstopped is True" + seconds_to_start_speaking: 60 + speak_interval: 600 + language: $(arg default_warning_speaker) + ignore_time_after_runstop_is_enabled: 5.0 + ignore_time_after_runstop_is_disabled: 5.0 + + + + + + + + + - + duration: 60 diff --git a/jsk_fetch_robot/jsk_fetch_startup/launch/fetch_coral.launch b/jsk_fetch_robot/jsk_fetch_startup/launch/fetch_coral.launch new file mode 100644 index 0000000000..237ef48534 --- /dev/null +++ b/jsk_fetch_robot/jsk_fetch_startup/launch/fetch_coral.launch @@ -0,0 +1,56 @@ + + + + + + + + + + + + edgetpu_human_node_manager: + nodes: + - name: edgetpu_human_pose_estimator + type: human_pose_estimator + - name: edgetpu_panorama_human_pose_estimator + type: panorama_human_pose_estimator + default: edgetpu_human_pose_estimator + edgetpu_human_pose_estimator: + input_topic: $(arg input_image) + image_transport: raw + device_id: 0 + edgetpu_panorama_human_pose_estimator: + input_topic: $(arg input_panorama_image) + image_transport: raw + device_id: 0 + + + + + + + edgetpu_object_node_manager: + nodes: + - name: edgetpu_object_detector + type: object_detector + - name: edgetpu_panorama_object_detector + type: panorama_object_detector + default: edgetpu_object_detector + edgetpu_object_detector: + input_topic: $(arg input_image) + image_transport: raw + device_id: 1 + model_file: /etc/ros/jsk_data/coral_usb/mobilenet_v2_ssd_73b2_kitchen_finetuning_20200528.tflite + label_file: /etc/ros/jsk_data/coral_usb/73b2_kitchen_labels.txt + edgetpu_panorama_object_detector: + input_topic: $(arg input_panorama_image) + image_transport: raw + device_id: 1 + model_file: /etc/ros/jsk_data/coral_usb/mobilenet_v2_ssd_73b2_kitchen_finetuning_20200528.tflite + label_file: /etc/ros/jsk_data/coral_usb/73b2_kitchen_labels.txt + + + diff --git a/jsk_fetch_robot/jsk_fetch_startup/launch/fetch_dialogflow_task_executive.launch b/jsk_fetch_robot/jsk_fetch_startup/launch/fetch_dialogflow_task_executive.launch new file mode 100644 index 0000000000..a236629a55 --- /dev/null +++ b/jsk_fetch_robot/jsk_fetch_startup/launch/fetch_dialogflow_task_executive.launch @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/jsk_fetch_robot/jsk_fetch_startup/launch/fetch_insta360_indigo.launch b/jsk_fetch_robot/jsk_fetch_startup/launch/fetch_insta360_indigo.launch index 5cd5374aa4..2835f972fd 100644 --- a/jsk_fetch_robot/jsk_fetch_startup/launch/fetch_insta360_indigo.launch +++ b/jsk_fetch_robot/jsk_fetch_startup/launch/fetch_insta360_indigo.launch @@ -1,6 +1,7 @@ + diff --git a/jsk_fetch_robot/jsk_fetch_startup/launch/fetch_insta360_melodic.launch b/jsk_fetch_robot/jsk_fetch_startup/launch/fetch_insta360_melodic.launch index c94523f778..9958ed71f2 100644 --- a/jsk_fetch_robot/jsk_fetch_startup/launch/fetch_insta360_melodic.launch +++ b/jsk_fetch_robot/jsk_fetch_startup/launch/fetch_insta360_melodic.launch @@ -2,14 +2,18 @@ + - - + + + + + @@ -21,8 +25,8 @@ - scale_width: 0.25 - scale_height: 0.25 + scale_width: 0.5 + scale_height: 0.5 diff --git a/jsk_fetch_robot/jsk_fetch_startup/launch/fetch_lifelog.xml b/jsk_fetch_robot/jsk_fetch_startup/launch/fetch_lifelog.xml index fc02dea6d2..75c150fbed 100644 --- a/jsk_fetch_robot/jsk_fetch_startup/launch/fetch_lifelog.xml +++ b/jsk_fetch_robot/jsk_fetch_startup/launch/fetch_lifelog.xml @@ -20,8 +20,8 @@ - - + + diff --git a/jsk_fetch_robot/jsk_fetch_startup/launch/fetch_realsense_bringup.launch b/jsk_fetch_robot/jsk_fetch_startup/launch/fetch_realsense_bringup.launch index c28fde2de9..1e0ab40556 100644 --- a/jsk_fetch_robot/jsk_fetch_startup/launch/fetch_realsense_bringup.launch +++ b/jsk_fetch_robot/jsk_fetch_startup/launch/fetch_realsense_bringup.launch @@ -1,9 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + - + /tracking_module/enable_mapping: false /tracking_module/enable_relocalization: false @@ -13,7 +40,7 @@ - + @@ -44,39 +71,131 @@ - + - + - - + - + - + - - + + + + + + + + + + + + + + + + + + + + /l515_head/motion_module/global_time_enabled: true + /l515_head/l500_depth_sensor/global_time_enabled: true + /l515_head/rgb_camera/global_time_enabled: true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + step_x: 4 + step_y: 4 + + + + + diff --git a/jsk_fetch_robot/jsk_fetch_startup/launch/fetch_sensors.xml b/jsk_fetch_robot/jsk_fetch_startup/launch/fetch_sensors.xml index 43d79040b6..2649c370e9 100644 --- a/jsk_fetch_robot/jsk_fetch_startup/launch/fetch_sensors.xml +++ b/jsk_fetch_robot/jsk_fetch_startup/launch/fetch_sensors.xml @@ -16,6 +16,15 @@ + + + + + warning_hz: 5 + + + + + + + warning_hz: 5 + + - + diff --git a/jsk_fetch_robot/jsk_fetch_startup/launch/fetch_tweet.launch b/jsk_fetch_robot/jsk_fetch_startup/launch/fetch_tweet.launch index d8faf71fb8..198a504b64 100644 --- a/jsk_fetch_robot/jsk_fetch_startup/launch/fetch_tweet.launch +++ b/jsk_fetch_robot/jsk_fetch_startup/launch/fetch_tweet.launch @@ -1,11 +1,10 @@ - - + diff --git a/jsk_fetch_robot/jsk_fetch_startup/launch/moveit/fetch.srdf.xacro b/jsk_fetch_robot/jsk_fetch_startup/launch/moveit/fetch.srdf.xacro index 3a3fe90d40..3371641386 100644 --- a/jsk_fetch_robot/jsk_fetch_startup/launch/moveit/fetch.srdf.xacro +++ b/jsk_fetch_robot/jsk_fetch_startup/launch/moveit/fetch.srdf.xacro @@ -1,7 +1,12 @@ + + + + + diff --git a/jsk_fetch_robot/jsk_fetch_startup/launch/navigation/fetch1075/fetch_move_base_common_params.yaml b/jsk_fetch_robot/jsk_fetch_startup/launch/navigation/fetch1075/fetch_move_base_common_params.yaml index e69de29bb2..b7eabb9a39 100644 --- a/jsk_fetch_robot/jsk_fetch_startup/launch/navigation/fetch1075/fetch_move_base_common_params.yaml +++ b/jsk_fetch_robot/jsk_fetch_startup/launch/navigation/fetch1075/fetch_move_base_common_params.yaml @@ -0,0 +1,36 @@ +move_base: + recovery_behavior_enabled: true + recovery_behaviors: + - name: "conservative_reset" + type: "clear_costmap_recovery/ClearCostmapRecovery" + - name: "rotate_recovery0" + type: "rotate_recovery/RotateRecovery" + - name: "speak_and_wait0" + type: "speak_and_wait_recovery/SpeakAndWaitRecovery" + - name: "aggressive_reset" + type: "clear_costmap_recovery/ClearCostmapRecovery" + - name: "rotate_recovery1" + type: "rotate_recovery/RotateRecovery" + - name: "speak_and_wait1" + type: "speak_and_wait_recovery/SpeakAndWaitRecovery" + - name: "all_reset" + type: "clear_costmap_recovery/ClearCostmapRecovery" + - name: "rotate_recovery2" + type: "rotate_recovery/RotateRecovery" + - name: "move_slow_and_clear" + type: "move_slow_and_clear/MoveSlowAndClear" + speak_and_wait0: + speak_text: "とおれません、みちをあけてください" + duration_wait: 5.0 + duration_timeout: 1.0 + sound_action: /robotsound_jp + speak_and_wait1: + speak_text: "とおれません、みちをあけてください" + duration_wait: 5.0 + duration_timeout: 1.0 + sound_action: /robotsound_jp + move_slow_and_clear: + planner_namespace: TrajectoryPlannerROS + max_trans_param_name: max_vel_x + max_rot_param_name: max_vel_theta + max_planning_retries: 2 diff --git a/jsk_fetch_robot/jsk_fetch_startup/launch/navigation/fetch15/fetch_move_base_common_params.yaml b/jsk_fetch_robot/jsk_fetch_startup/launch/navigation/fetch15/fetch_move_base_common_params.yaml index a0a284bfa1..0d3130cdcb 100644 --- a/jsk_fetch_robot/jsk_fetch_startup/launch/navigation/fetch15/fetch_move_base_common_params.yaml +++ b/jsk_fetch_robot/jsk_fetch_startup/launch/navigation/fetch15/fetch_move_base_common_params.yaml @@ -1,119 +1,18 @@ move_base: - controller_frequency: 20.0 - global_costmap: - inflater: - inflation_radius: 1.0 # 0.7 - cost_scaling_factor: 10.0 # 10.0 - obstacles: - min_obstacle_height: 0.05 - footprint_padding: 0.05 - publish_frequency: 1.0 - local_costmap: - inflater: - inflation_radius: 1.0 # 0.7 - cost_scaling_factor: 10.0 # 25.0 default 10, increasing factor decrease the cost value - obstacles: - min_obstacle_height: 0.05 - # default 5 (http://wiki.ros.org/navigation/Tutorials/Navigation%20Tuning%20Guide) - footprint_padding: 0.05 - update_frequency: 5.0 - base_global_planner: global_planner/GlobalPlanner - base_local_planner: teb_local_planner/TebLocalPlannerROS - # base_local_planner: base_local_planner/TrajectoryPlannerROS - GlobalPlanner: - allow_unknown: true - default_tolerance: 0.0 - orientation_mode: 1 - visualize_potential: false - publish_potential: false - TrajectoryPlannerROS: - yaw_goal_tolerance: 0.1 - xy_goal_tolerance: 0.17 - max_vel_x: 0.5 - min_vel_x: 0.1 - min_in_place_vel_theta: 0.5 - escape_vel: 0.0 - sim_time: 1.5 - sim_granularity: 0.025 - angular_sim_granularity: 0.025 - vx_samples: 10 - vth_samples: 40 - meter_scoring: true - pdist_scale: 4.0 - gdist_scale: 2.5 - occdist_scale: 0.00625 - dwa: true - TebLocalPlannerROS: - odom_topic: /odom_combined - map_frame: /odom - # Trajectory - teb_autosize: True - dt_ref: 0.3 - dt_hysteresis: 0.1 - global_plan_overwrite_orientation: True - max_global_plan_lookahead_dist: 3.0 - feasibility_check_no_poses: 5 - # Robot - max_vel_x: 0.5 - max_vel_x_backwards: 0.3 - max_vel_theta: 1.0 - acc_lim_x: 1.0 - acc_lim_theta: 1.0 - min_turning_radius: 0.2 - footprint_model: - type: "circular" - radius: 0.3 - # GoalTolerance - xy_goal_tolerance: 0.2 - yaw_goal_tolerance: 0.1 - free_goal_vel: False - # Obstacles - min_obstacle_dist: 0.1 - include_costmap_obstacles: True - costmap_obstacles_behind_robot_dist: 1.0 - obstacle_poses_afected: 30 - costmap_converter_plugin: "" - costmap_converter_spin_thread: True - costmap_converter_rate: 5 - # Optimization - no_inner_iterations: 5 - no_outer_iterations: 4 - optimization_activate: True - optimization_verbose: False - penalty_epsilon: 0.1 - weight_max_vel_x: 2 - weight_max_vel_theta: 1 - weight_acc_lim_x: 1 - weight_acc_lim_theta: 1 - weight_kinematics_nh: 1000 - weight_kinematics_forward_drive: 1 - weight_kinematics_turning_radius: 100 - weight_optimaltime: 1 - weight_obstacle: 50 - weight_dynamic_obstacle: 10 # not in use yet - alternative_time_cost: False # not in use yet - # Homotopy Class Planner - enable_homotopy_class_planning: True - enable_multithreading: True - simple_exploration: False - max_number_classes: 4 - roadmap_graph_no_samples: 15 - roadmap_graph_area_width: 5 - h_signature_prescaler: 0.5 - h_signature_threshold: 0.1 - obstacle_keypoint_offset: 0.1 - obstacle_heading_threshold: 0.45 - visualize_hc_graph: False recovery_behavior_enabled: true recovery_behaviors: - name: "conservative_reset" type: "clear_costmap_recovery/ClearCostmapRecovery" - name: "rotate_recovery0" type: "rotate_recovery/RotateRecovery" + - name: "speak_and_wait0" + type: "speak_and_wait_recovery/SpeakAndWaitRecovery" - name: "aggressive_reset" type: "clear_costmap_recovery/ClearCostmapRecovery" - name: "rotate_recovery1" type: "rotate_recovery/RotateRecovery" + - name: "speak_and_wait1" + type: "speak_and_wait_recovery/SpeakAndWaitRecovery" - name: "all_reset" type: "clear_costmap_recovery/ClearCostmapRecovery" - name: "rotate_recovery2" @@ -125,11 +24,21 @@ move_base: rotate_recovery0: frequency: 20.0 sim_granularity: 0.017 + speak_and_wait0: + speak_text: "とおれません、みちをあけてください" + duration_wait: 5.0 + duration_timeout: 1.0 + sound_action: /robotsound_jp aggressive_reset: reset_distance: 1.0 # 0.5 rotate_recovery1: frequency: 20.0 sim_granularity: 0.017 + speak_and_wait1: + speak_text: "とおれません、みちをあけてください" + duration_wait: 5.0 + duration_timeout: 1.0 + sound_action: /robotsound_jp all_reset: reset_distance: 0.0 rotate_recovery2: diff --git a/jsk_fetch_robot/jsk_fetch_startup/launch/rosbag_play.launch b/jsk_fetch_robot/jsk_fetch_startup/launch/rosbag_play.launch index 1fdab69f5f..20abc5d53a 100644 --- a/jsk_fetch_robot/jsk_fetch_startup/launch/rosbag_play.launch +++ b/jsk_fetch_robot/jsk_fetch_startup/launch/rosbag_play.launch @@ -12,6 +12,8 @@ + + @@ -104,8 +106,8 @@ + args="$(arg rosbag) $(arg loop_flag) --clock --start $(arg start_time) $(arg duration) -r $(arg rate)" output="screen" /> + args="-d $(arg rviz_config)" /> diff --git a/jsk_fetch_robot/jsk_fetch_startup/launch/rosbag_record.launch b/jsk_fetch_robot/jsk_fetch_startup/launch/rosbag_record.launch index 43b5a923ce..12dd846fd3 100644 --- a/jsk_fetch_robot/jsk_fetch_startup/launch/rosbag_record.launch +++ b/jsk_fetch_robot/jsk_fetch_startup/launch/rosbag_record.launch @@ -35,6 +35,9 @@ /head_camera/depth_registered/throttled/camera_info /head_camera/rgb/throttled/image_rect_color/compressed /head_camera/depth_registered/throttled/image_rect/compressedDepth + /server_name/smach/container_init + /server_name/smach/container_status + /server_name/smach/container_structure /audio $(arg other_topics) $(arg regex_flag) diff --git a/jsk_fetch_robot/jsk_fetch_startup/launch/trashbin_occupancy_detector.launch b/jsk_fetch_robot/jsk_fetch_startup/launch/trashbin_occupancy_detector.launch new file mode 100644 index 0000000000..76030da7cd --- /dev/null +++ b/jsk_fetch_robot/jsk_fetch_startup/launch/trashbin_occupancy_detector.launch @@ -0,0 +1,176 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + use_indices: false + + + + + + + + + + + + + + + + + + + + + + + + + tolerance: 0.02 + min_size: 20 + vital_rate: 0.1 + + + + + + + + align_boxes: true + align_boxes_with_plane: false + target_frame_id: base_link + use_pca: true + force_to_flip_z_axis: false + vital_rate: 0.1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + trashbin_l: 0.3 + trashbin_w: 0.2 + trashbin_h: 0.49 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/jsk_fetch_robot/jsk_fetch_startup/launch/view_model.launch b/jsk_fetch_robot/jsk_fetch_startup/launch/view_model.launch new file mode 100644 index 0000000000..4f8ef6e3f9 --- /dev/null +++ b/jsk_fetch_robot/jsk_fetch_startup/launch/view_model.launch @@ -0,0 +1,17 @@ + + + + + + + + + + + + diff --git a/jsk_fetch_robot/jsk_fetch_startup/package.xml b/jsk_fetch_robot/jsk_fetch_startup/package.xml index a89d0c4dea..0a031ea04e 100644 --- a/jsk_fetch_robot/jsk_fetch_startup/package.xml +++ b/jsk_fetch_robot/jsk_fetch_startup/package.xml @@ -29,12 +29,15 @@ pr2_computer_monitor robot_pose_publisher rviz + switchbot_ros tf touchegg sound_play switchbot_ros tf2_ros voice_text + tf2 + tf2_geometry_msgs amcl @@ -64,9 +67,16 @@ julius_ros respeaker_ros + + dialogflow_task_executive + google_chat_ros + robot_pose_publisher + + jsk_pcl_ros + rostest diff --git a/jsk_fetch_robot/jsk_fetch_startup/robots/head_l515.srdf.xacro b/jsk_fetch_robot/jsk_fetch_startup/robots/head_l515.srdf.xacro new file mode 100644 index 0000000000..fdc9de6879 --- /dev/null +++ b/jsk_fetch_robot/jsk_fetch_startup/robots/head_l515.srdf.xacro @@ -0,0 +1,6 @@ + + + + + + diff --git a/jsk_fetch_robot/jsk_fetch_startup/robots/head_l515.urdf.xacro b/jsk_fetch_robot/jsk_fetch_startup/robots/head_l515.urdf.xacro new file mode 100644 index 0000000000..24885a8324 --- /dev/null +++ b/jsk_fetch_robot/jsk_fetch_startup/robots/head_l515.urdf.xacro @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/jsk_fetch_robot/jsk_fetch_startup/robots/insta360_stand.urdf.xacro b/jsk_fetch_robot/jsk_fetch_startup/robots/insta360_stand.urdf.xacro new file mode 100644 index 0000000000..690742cfa6 --- /dev/null +++ b/jsk_fetch_robot/jsk_fetch_startup/robots/insta360_stand.urdf.xacro @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/jsk_fetch_robot/jsk_fetch_startup/robots/jsk_fetch.urdf.xacro b/jsk_fetch_robot/jsk_fetch_startup/robots/jsk_fetch.urdf.xacro index a3caf26abf..ede62cbb2c 100644 --- a/jsk_fetch_robot/jsk_fetch_startup/robots/jsk_fetch.urdf.xacro +++ b/jsk_fetch_robot/jsk_fetch_startup/robots/jsk_fetch.urdf.xacro @@ -1,9 +1,11 @@ - - + + + + @@ -17,4 +19,10 @@ + + + + + + diff --git a/jsk_fetch_robot/jsk_fetch_startup/scripts/certbot_renewhook.sh b/jsk_fetch_robot/jsk_fetch_startup/scripts/certbot_renewhook.sh new file mode 100755 index 0000000000..d37fe27421 --- /dev/null +++ b/jsk_fetch_robot/jsk_fetch_startup/scripts/certbot_renewhook.sh @@ -0,0 +1,7 @@ +#!/bin/sh + +SITE=dialogflow.$(hostname).jsk.imi.i.u-tokyo.ac.jp + +cd /etc/letsencrypt/live/$SITE +cat fullchain.pem privkey.pem > /etc/haproxy/certs/$SITE.pem +systemctl restart haproxy diff --git a/jsk_fetch_robot/jsk_fetch_startup/scripts/correct_position.py b/jsk_fetch_robot/jsk_fetch_startup/scripts/correct_position.py index db9c04f6c7..006ee85c3c 100755 --- a/jsk_fetch_robot/jsk_fetch_startup/scripts/correct_position.py +++ b/jsk_fetch_robot/jsk_fetch_startup/scripts/correct_position.py @@ -21,7 +21,8 @@ def __init__(self): if robot_name == 'fetch15': dock_name = '/eng2/7f/room73B2-fetch-dock-front' elif robot_name == 'fetch1075': - dock_name = '/eng2/7f/room73B2-fetch-dock-entrance' + dock_name = '/eng2/7f/room73B2-fetch-dock2-front' + # dock_name = '/eng2/7f/room73B2-fetch-dock-entrance' for spot in spots.markers: if spot.text == dock_name: self.dock_pose = spot.pose diff --git a/jsk_fetch_robot/jsk_fetch_startup/scripts/dstat.bash b/jsk_fetch_robot/jsk_fetch_startup/scripts/dstat.bash new file mode 100755 index 0000000000..440237145e --- /dev/null +++ b/jsk_fetch_robot/jsk_fetch_startup/scripts/dstat.bash @@ -0,0 +1,14 @@ +#!/usr/bin/env bash + +# Keep only the last 1000 lines of csv log before executing dstat +CSV_FILE=/home/fetch/Documents/jsk_dstat.csv + +if [ -e $CSV_FILE ]; then + cp -f $CSV_FILE $CSV_FILE.bk + tail -n 1000 $CSV_FILE.bk > $CSV_FILE + rm -f $CSV_FILE.bk +else + touch $CSV_FILE +fi + +dstat -tl --cpufreq -c -C all --top-cpu-adv -dgimnprsTy --output $CSV_FILE diff --git a/jsk_fetch_robot/jsk_fetch_startup/scripts/fetchctl.sh b/jsk_fetch_robot/jsk_fetch_startup/scripts/fetchctl.sh new file mode 100755 index 0000000000..ec5d8f0b84 --- /dev/null +++ b/jsk_fetch_robot/jsk_fetch_startup/scripts/fetchctl.sh @@ -0,0 +1,63 @@ +#!/bin/bash + +function usage() { + echo "Usage: $0 " + exit 1 +} + +function start_jobs() { + sudo supervisorctl start roscore + sudo supervisorctl start robot + sudo supervisorctl start jsk-shutdown + sudo supervisorctl start jsk-rfcomm-bind + sudo supervisorctl start jsk-object-detector + sudo supervisorctl start jsk-network-monitor + sudo supervisorctl start jsk-log-wifi + sudo supervisorctl start jsk-human-pose-estimator + sudo supervisorctl start jsk-gdrive + sudo supervisorctl start jsk-fetch-startup + sudo supervisorctl start jsk-dstat + sudo supervisorctl start jsk-dialog + sudo supervisorctl start jsk-app-scheduler +} + +function restart_jobs() { + sudo supervisorctl restart roscore + sudo supervisorctl restart robot + sudo supervisorctl restart jsk-shutdown + sudo supervisorctl restart jsk-rfcomm-bind + sudo supervisorctl restart jsk-object-detector + sudo supervisorctl restart jsk-network-monitor + sudo supervisorctl restart jsk-log-wifi + sudo supervisorctl restart jsk-human-pose-estimator + sudo supervisorctl restart jsk-gdrive + sudo supervisorctl restart jsk-fetch-startup + sudo supervisorctl restart jsk-dstat + sudo supervisorctl restart jsk-dialog + sudo supervisorctl restart jsk-app-scheduler +} + +function stop_jobs() { + sudo supervisorctl stop roscore + sudo supervisorctl stop robot + sudo supervisorctl stop jsk-shutdown + sudo supervisorctl stop jsk-rfcomm-bind + sudo supervisorctl stop jsk-object-detector + sudo supervisorctl stop jsk-network-monitor + sudo supervisorctl stop jsk-log-wifi + sudo supervisorctl stop jsk-human-pose-estimator + sudo supervisorctl stop jsk-gdrive + sudo supervisorctl stop jsk-fetch-startup + sudo supervisorctl stop jsk-dstat + sudo supervisorctl stop jsk-dialog + sudo supervisorctl stop jsk-app-scheduler +} + +command=$1 + +case "$command" in + start) start_jobs;; + restart) restart_jobs;; + stop) stop_jobs;; + *) usage;; +esac diff --git a/jsk_fetch_robot/jsk_fetch_startup/scripts/log-wifi-link.sh b/jsk_fetch_robot/jsk_fetch_startup/scripts/log-wifi-link.sh index 9de64ee353..3afeeb5c6d 100755 --- a/jsk_fetch_robot/jsk_fetch_startup/scripts/log-wifi-link.sh +++ b/jsk_fetch_robot/jsk_fetch_startup/scripts/log-wifi-link.sh @@ -1,25 +1,51 @@ #!/bin/bash IFACE=wlan0 -OUTPATH=/var/log/wifi.log INTERVAL=10 +PING_COUNT=3 +PING_TIMEOUT=1 +PING_TARGET="www.google.com" wifi_status(){ local ssid=$(iw $IFACE link | grep SSID | cut -d: -f2) local freq=$(iw $IFACE link | grep freq | cut -d':' -f2) - local signal=$(cat /proc/net/wireless | grep wlan0 | awk '{print $3}') - local level=$(cat /proc/net/wireless | grep wlan0 | awk '{print $4}') - local noise=$(cat /proc/net/wireless | grep wlan0 | awk '{print $5}') + local signal=$(cat /proc/net/wireless | grep $IFACE | awk '{print $3}') + local level=$(cat /proc/net/wireless | grep $IFACE | awk '{print $4}') + local noise=$(cat /proc/net/wireless | grep $IFACE | awk '{print $5}') local bitrate=$(iw $IFACE link | grep bitrate | cut -d':' -f2) - echo "$(date -Iseconds),$ssid,$freq,$signal,$level,$noise,$bitrate" + local ping_result_raw=$(ping -I $IFACE $PING_TARGET -c $PING_COUNT -W $PING_TIMEOUT 2> /dev/null | tail -n 1) + if [ -z "$ping_result_raw" ]; then + # minus ping indicates ping fails + local ping_result_duration=-1000 + else + local ping_result_duration=$(echo $ping_result_raw | cut -d " " -f 4 | cut -d "/" -f 2) + fi + echo "$(date -Iseconds),$ssid,$freq,$signal,$level,$noise,$bitrate, $ping_result_duration" } -OUTDIR=$(dirname $OUTPATH) -if [ ! -d $OUTDIR ]; then - mkdir -p $OUTDIR -fi +print_help(){ + echo "Usage: log-wifi-link.sh [-h]" + echo " [-i INTERVAL (default: 10)]" + echo " [-I IFACE (default: wlan0)]" + echo " [-c PING_COUNT (default: 3)]" + echo " [-W PING_TIMEOUT (default: 1)]" + echo " [-t PING_TARGET (default: \"www.google.com\")]" + exit 1 +} + +while getopts hi:I:c:W:t: o +do + case "$o" in + i) INTERVAL=$OPTARG;; + I) IFACE="$OPTARG";; + c) PING_COUNT=$OPTARG;; + W) PING_TIMEOUT=$OPTARG;; + t) PING_TARGET="$OPTARG";; + h) print_help;; + esac +done while true; do - wifi_status >> $OUTPATH + wifi_status sleep $INTERVAL done diff --git a/jsk_fetch_robot/jsk_fetch_startup/scripts/network_monitor.py b/jsk_fetch_robot/jsk_fetch_startup/scripts/network_monitor.py index 1f67266a30..782f5479a5 100755 --- a/jsk_fetch_robot/jsk_fetch_startup/scripts/network_monitor.py +++ b/jsk_fetch_robot/jsk_fetch_startup/scripts/network_monitor.py @@ -47,21 +47,21 @@ TOUCH_FILE = "/home/fetch/.Network_Monitor_Restarted_Robot" -def ping(use_arping, hosts): +def ping(use_arping, hosts, network_interface='wlan0'): for host in hosts: for _ in xrange(5): print(datetime.now(),"Sending ping request") if use_arping: - response = os.system("arping -I wlan0 -c 1 " + host) + response = os.system("arping -I {} -c 1 {}".format(network_interface, host)) else: - response = os.system("ping -c 1 -q " + host) + response = os.system("ping -c 1 -q {}".format(host)) if response == 0: return True sleep(5) return False -def get_sanshiro(): - return [['sanshiro', 'sanshiro']] +def get_sanshiro(network_profile_id): + return [[network_profile_id, 'sanshiro']] def get_saved_networks(filepaths=None): # NetworkManager has its own ID for networks, often multiple for the same @@ -90,19 +90,19 @@ def get_saved_networks(filepaths=None): # for reconnecting to 'sanshiro' -def reconnect_to_wlan(): - if call(["nmcli", "d", "disconnect", "iface", "wlan0"]) == 0: +def reconnect_to_wlan(network_interface='wlan0', network_profile_id='sanshiro'): + if call(["nmcli", "d", "disconnect", "iface", network_interface]) == 0: sleep(0.3) - print("disconnect from wlan0") + print("Network disconnected with interface \"{}\"".format(network_interface)) else: - print("'nmcli d disconnect iface wlan0' do not work correctly!") + print("'nmcli d disconnect iface {}' do not work correctly!".format(network_interface)) - if call(["nmcli", "c", "up", "id", "sanshiro"]) == 0: + if call(["nmcli", "c", "up", "id", network_profile_id]) == 0: sleep(0.3) - print("connect to sanshiro") + print("Network connected with profile \"{}\"".format(network_profile_id)) return True else: - print("'nmcli c up id sanshiro' do not work correctly!") + print("'nmcli c up id {}' do not work correctly!".format(network_profile_id)) return False @@ -150,13 +150,13 @@ def connect_by_nmcli_id(nid, ssid="SSID not given"): return False -def attempt_reconnect_to_network(): +def attempt_reconnect_to_network(network_interface, network_profile_id): # First, try to connect to sanshiro - if connect_by_nmcli_id('sanshiro', 'sanshiro'): + if connect_by_nmcli_id(network_profile_id, 'sanshiro'): return True # Get list of stored 'wireless' connections; [id, ssid] - known = get_saved_networks() # alternative : known = get_sanshiro() + known = get_saved_networks() # alternative : known = get_sanshiro(network_profile_id) # Get list of unique available wifi network ssids and their strongest signal avail = get_avail_networks_by_strength() @@ -170,7 +170,7 @@ def attempt_reconnect_to_network(): for ntwk in to_try: if connect_by_nmcli_id(*ntwk): return True - if reconnect_to_wlan(): + if reconnect_to_wlan(network_interface, network_profile_id): return True return False @@ -249,12 +249,12 @@ def main(args): while True: try: # Check if we can ping the access point - if not ping(args.arping, hostnames): + if not ping(args.arping, hostnames, args.interface): print(datetime.now(), "Cannot connect to", ', '.join(hostnames)) sound_goal.goal.sound_request.arg = "ピングが通りません" pub.publish(sound_goal) # Try to connect to any known network - if not attempt_reconnect_to_network(): + if not attempt_reconnect_to_network(args.interface, args.profile): # TODO use check_output instead of Popen and handle truly # bad issues with computer restarts or notification. print(datetime.now(), "Restarting network-manager") @@ -302,6 +302,10 @@ def main(args): help="One or more comma delimited hostname(s) to ping. Hostnames will " "be tried in order supplied until one is successfully contacted. Default: " "Looks for NETWORK_MONITOR_HOSTNAMES in environment.") + parser.add_argument('-I', '--interface', default='wlan0', + help='Network interface to be used.') + parser.add_argument('--profile', default='sanshiro', + help='Network profile to be used.') parser.add_argument("-a", "--arping", action='store_true', help="Use arping instead of ping.") parser.add_argument("--enable-reboot-option", action='store_true', diff --git a/jsk_fetch_robot/jsk_fetch_startup/scripts/odometry_transformer.py b/jsk_fetch_robot/jsk_fetch_startup/scripts/odometry_transformer.py index 4871e08891..e85db4d5eb 100755 --- a/jsk_fetch_robot/jsk_fetch_startup/scripts/odometry_transformer.py +++ b/jsk_fetch_robot/jsk_fetch_startup/scripts/odometry_transformer.py @@ -67,7 +67,8 @@ def cb_odometry(self, msg): math.isnan(msg.twist.twist.angular.x) or math.isnan(msg.twist.twist.angular.y) or math.isnan(msg.twist.twist.angular.z)): - rospy.logwarn('Recieved an odom message with nan values') + rospy.logwarn_throttle( + 10, 'Received an odom message with nan values') return pos_t265_odombased = np.array([ diff --git a/jsk_fetch_robot/jsk_fetch_startup/scripts/storage_warning.sh b/jsk_fetch_robot/jsk_fetch_startup/scripts/storage_warning.sh new file mode 100755 index 0000000000..10f059f0b4 --- /dev/null +++ b/jsk_fetch_robot/jsk_fetch_startup/scripts/storage_warning.sh @@ -0,0 +1,40 @@ +#!/usr/bin/env bash + +# Check storage percentage +STORAGE_PERCENTAGE=`df -h / | awk 'NR==2 {print $5}' | sed -e 's/\%//g'` + +# If storage_percentage greater than 80% +if [ $STORAGE_PERCENTAGE -gt 80 ]; then + SEND_EMAIL=1 + # In root directory + ROOTDIR_STORAGE=`du -h -d 0 /* 2>/dev/null | sort -hr | awk '{print $2 " " $1}'` + # In home directory + HOMEDIR_STORAGE=`du -h -d 0 /home/* 2>/dev/null | sort -hr | awk '{print $2 " " $1}'` +else + echo -e "No problem with the storace capacity. Storage percentage: $STORAGE_PERCENTAGE" +fi + +if [ -n "$SEND_EMAIL" ]; then + rostopic pub -1 /email jsk_robot_startup/Email "header: + seq: 0 + stamp: {secs: 0, nsecs: 0} + frame_id: '' +subject: 'Storage warning' +body: 'Storage usage is ${STORAGE_PERCENTAGE}%. Please remove unnecessary files. + + +In root directory: + +${ROOTDIR_STORAGE} + + +In home directory: + +${HOMEDIR_STORAGE}' +sender_address: '$(hostname)@jsk.imi.i.u-tokyo.ac.jp' +receiver_address: 'fetch@jsk.imi.i.u-tokyo.ac.jp' +smtp_server: '' +smtp_port: '' +attached_files: []" + echo -e "Storage percentage: $STORAGE_PERCENTAGE\n Root directory: $ROOTDIR_STORAGE\n Home directory: $HOMEDIR_STORAGE\n" +fi diff --git a/jsk_fetch_robot/jsk_fetch_startup/scripts/update_workspace.sh b/jsk_fetch_robot/jsk_fetch_startup/scripts/update_workspace.sh index f27e401366..5646eb2875 100755 --- a/jsk_fetch_robot/jsk_fetch_startup/scripts/update_workspace.sh +++ b/jsk_fetch_robot/jsk_fetch_startup/scripts/update_workspace.sh @@ -1,43 +1,5 @@ #!/usr/bin/env bash -. $HOME/ros/melodic/devel/setup.bash -# Filename should end with .txt to preview the contents in a web browser -LOGFILE=$HOME/ros/melodic/update_workspace.txt - -{ -set -x -# Update workspace -cd $HOME/ros/melodic/src -ln -sf $(rospack find jsk_fetch_startup)/../jsk_fetch.rosinstall.$ROS_DISTRO $HOME/ros/melodic/src/.rosinstall -wstool foreach --git 'git stash' -wstool update --delete-changed-uris -WSTOOL_UPDATE_RESULT=$? -cd $HOME/ros/melodic -catkin clean aques_talk collada_urdf_jsk_patch -y -catkin init -catkin config -DCMAKE_BUILD_TYPE=Release -catkin build -CATKIN_BUILD_RESULT=$? -# Send mail -MAIL_BODY="" -if [ $WSTOOL_UPDATE_RESULT -ne 0 ]; then - MAIL_BODY=$MAIL_BODY"Please wstool update workspace manually. " -fi -if [ $CATKIN_BUILD_RESULT -ne 0 ]; then - MAIL_BODY=$MAIL_BODY"Please catkin build workspace manually." -fi -set +x -} > $LOGFILE 2>&1 -if [ -n "$MAIL_BODY" ]; then - rostopic pub -1 /email jsk_robot_startup/Email "header: - seq: 0 - stamp: {secs: 0, nsecs: 0} - frame_id: '' -subject: 'Daily workspace update fails' -body: '$MAIL_BODY' -sender_address: '$(hostname)@jsk.imi.i.u-tokyo.ac.jp' -receiver_address: 'fetch@jsk.imi.i.u-tokyo.ac.jp' -smtp_server: '' -smtp_port: '' -attached_files: ['$LOGFILE']" -fi +cp $(rospack find jsk_fetch_startup)/scripts/update_workspace_main.sh /tmp/update_workspace.sh +/tmp/update_workspace.sh $@ +rm /tmp/update_workspace.sh diff --git a/jsk_fetch_robot/jsk_fetch_startup/scripts/update_workspace_main.sh b/jsk_fetch_robot/jsk_fetch_startup/scripts/update_workspace_main.sh new file mode 100755 index 0000000000..74eb47693b --- /dev/null +++ b/jsk_fetch_robot/jsk_fetch_startup/scripts/update_workspace_main.sh @@ -0,0 +1,113 @@ +#!/usr/bin/env bash + +function usage() +{ + echo "Usage: $0 [-w workspace_directory] [-h] [-l] + +optional arguments: + -h show this help + -w WORKSPACE_PATH specify target workspace + -l do not send a mail +" +} + +function get_full_path() +{ + echo "$(cd $(dirname $1) && pwd)/$(basename $1)" +} + +SEND_MAIL=true +WORKSPACE=$(get_full_path $HOME/ros/melodic) + +while getopts hlw: OPT +do + case $OPT in + w) + WORKSPACE=$(get_full_path $OPTARG) + ;; + l) + SEND_MAIL=false + ;; + h) + usage + exit 1 + ;; + *) + usage + exit 1 + ;; + esac +done + +if [ ! -e $WORKSPACE ]; then + echo "No workspace $WORKSPACE" + exit 1 +fi + +. $WORKSPACE/devel/setup.bash +# Filename should end with .txt to preview the contents in a web browser +LOGFILE=$WORKSPACE/update_workspace.txt + +{ +set -x +# Update workspace + +wstool foreach -t $WORKSPACE/src --git 'git stash' +wstool foreach -t $WORKSPACE/src --git 'git fetch origin --prune' +wstool update -t $WORKSPACE/src jsk-ros-pkg/jsk_robot +ln -sf $(rospack find jsk_fetch_startup)/../jsk_fetch.rosinstall.$ROS_DISTRO $WORKSPACE/src/.rosinstall +wstool update -t $WORKSPACE/src --delete-changed-uris +# Forcefully checkout specified branch +wstool foreach -t $WORKSPACE/src --git --shell 'branchname=$(git rev-parse --abbrev-ref HEAD); if [ $branchname != "HEAD" ]; then git reset --hard HEAD; git checkout origin/$branchname; git branch -D $branchname; git checkout -b $branchname --track origin/$branchname; fi' +wstool update -t $WORKSPACE/src +WSTOOL_UPDATE_RESULT=$? +# Rosdep Install +sudo apt-get update -y +rosdep update +# jsk_footstep_planner is not released for melodic +# jsk_footstep_controller is not released for melodic +# librealsense2 should not be installed from ROS repository +# realsense-ros should not be installed from ROS repository +rosdep install --from-paths $WORKSPACE/src --ignore-src -y -r --skip-keys \ +"\ +jsk_footstep_controller \ +jsk_footstep_planner \ +librealsense2 \ +realsense2_camera \ +realsense2_description \ +" +ROSDEP_INSTALL_RESULT=$? +# Build workspace +cd $WORKSPACE +catkin clean aques_talk collada_urdf_jsk_patch libcmt -y +catkin init +catkin config -DCMAKE_BUILD_TYPE=Release +catkin build --continue-on-failure +CATKIN_BUILD_RESULT=$? +# Send mail +MAIL_BODY="" +if [ $WSTOOL_UPDATE_RESULT -ne 0 ]; then + MAIL_BODY=$MAIL_BODY"Please wstool update workspace manually. " +fi +if [ $ROSDEP_INSTALL_RESULT -ne 0 ]; then + MAIL_BODY=$MAIL_BODY"Please install dependencies manually. " +fi +if [ $CATKIN_BUILD_RESULT -ne 0 ]; then + MAIL_BODY=$MAIL_BODY"Please catkin build workspace manually." +fi +set +x +} 2>&1 | tee $LOGFILE +if [ -n "$MAIL_BODY" ] && [ "${SEND_MAIL}" == "true" ]; then + echo "Sent a mail" + rostopic pub -1 /email jsk_robot_startup/Email "header: + seq: 0 + stamp: {secs: 0, nsecs: 0} + frame_id: '' +subject: 'Daily workspace update fails' +body: '$MAIL_BODY' +sender_address: '$(hostname)@jsk.imi.i.u-tokyo.ac.jp' +receiver_address: 'fetch@jsk.imi.i.u-tokyo.ac.jp' +smtp_server: '' +smtp_port: '' +attached_files: ['$LOGFILE']" +fi diff --git a/jsk_fetch_robot/jsk_fetch_startup/scripts/warning.py b/jsk_fetch_robot/jsk_fetch_startup/scripts/warning.py index 6591399caa..029e8b281c 100755 --- a/jsk_fetch_robot/jsk_fetch_startup/scripts/warning.py +++ b/jsk_fetch_robot/jsk_fetch_startup/scripts/warning.py @@ -9,7 +9,6 @@ from sound_play.libsoundplay import SoundClient from actionlib_msgs.msg import GoalStatus, GoalStatusArray -from diagnostic_msgs.msg import DiagnosticArray, DiagnosticStatus from fetch_driver_msgs.msg import RobotState from geometry_msgs.msg import Twist from power_msgs.msg import BatteryState, BreakerState @@ -36,40 +35,6 @@ def terminate_thread(thread): ctypes.pythonapi.PyThreadState_SetAsyncExc(thread.ident, None) raise SystemError("PyThreadState_SetAsyncExc failed") -class DiagnosticsSpeakThread(threading.Thread): - def __init__(self, error_status): - threading.Thread.__init__(self) - self.volume = rospy.get_param("~volume", 1.0) - self.error_status = error_status - self.start() - - def run(self): - global sound - for status in self.error_status: - # ignore error status if the error already occured in the latest 10 minites - if status.message in error_status_in_10_min: - if rospy.Time.now().secs - error_status_in_10_min[status.message] < 600: - continue - else: - error_status_in_10_min[status.message] = rospy.Time.now().secs - else: - error_status_in_10_min[status.message] = rospy.Time.now().secs - # we can ignore "Joystick not open." - if status.message == "Joystick not open." : - continue - if status.name == "supply_breaker" and status.message == "Disabled." : - continue - # - text = "Error on {}, {}".format(status.name, status.message) - rospy.loginfo(text) - text = text.replace('_', ', ') - sound.say(text, 'voice_kal_diphone', volume=self.volume) - time.sleep(5) - - def stop(self): - terminate_thread(self) - self.join() - class Warning: def __init__(self): time.sleep(1) @@ -77,22 +42,13 @@ def __init__(self): self.battery_state_msgs = BatteryState() self.twist_msgs = Twist() # - self.diagnostics_speak_thread = {} self.auto_undocking = False - self.diagnostics_list = [] - if rospy.get_param("~speak_warn", True): - self.diagnostics_list.append(DiagnosticStatus.WARN) - if rospy.get_param("~speak_error", True): - self.diagnostics_list.append(DiagnosticStatus.ERROR) - if rospy.get_param("~speak_stale", True): - self.diagnostics_list.append(DiagnosticStatus.STALE) # self.base_breaker = rospy.ServiceProxy('base_breaker', BreakerCommand) # self.battery_sub = rospy.Subscriber("battery_state", BatteryState, self.battery_callback, queue_size = 1) self.cmd_vel_sub = rospy.Subscriber("base_controller/command_unchecked", Twist, self.cmd_vel_callback, queue_size = 1) self.robot_state_sub = rospy.Subscriber("robot_state", RobotState, self.robot_state_callback, queue_size = 1) - self.diagnostics_status_sub = rospy.Subscriber("diagnostics", DiagnosticArray, self.diagnostics_status_callback, queue_size = 1) self.undock_sub = rospy.Subscriber("/undock/status", GoalStatusArray, self.undock_status_callback) # self.cmd_vel_pub = rospy.Publisher("base_controller/command", Twist, queue_size=1) @@ -118,8 +74,8 @@ def battery_callback(self, msg): time.sleep(5) def cmd_vel_callback(self, msg): - ## warn when cmd_vel is issued while the robot is charning - rospy.logdebug("cmd_vel : x:{} y:{} z:{}, battery.is_charning {}".format(msg.linear.x,msg.linear.y,msg.angular.z,self.battery_state_msgs.is_charging)) + ## warn when cmd_vel is issued while the robot is charging + rospy.logdebug("cmd_vel : x:{} y:{} z:{}, battery.is_charging {}".format(msg.linear.x,msg.linear.y,msg.angular.z,self.battery_state_msgs.is_charging)) breaker_enabled = True try: breaker_status = filter(lambda n: n.name=='base_breaker', self.robot_state_msgs.breakers)[0] @@ -140,29 +96,6 @@ def cmd_vel_callback(self, msg): ## self.twist_msgs = msg - def diagnostics_status_callback(self, msg): - ## - self.diagnostic_status_msgs = msg.status - ## - ## check if this comes from /robot_driver - callerid = msg._connection_header['callerid'] - if callerid not in self.diagnostics_speak_thread: - self.diagnostics_speak_thread[callerid] = None - error_status = filter(lambda n: n.level in self.diagnostics_list, msg.status) - # when RunStopped, ignore message from *_mcb and *_breaker - if self.robot_state_msgs.runstopped: - error_status = filter(lambda n: not (re.match("\w*_(mcb|breaker)",n.name) or (n.name == "Mainboard" and n.message == "Runstop pressed")), error_status) - if not error_status : # error_status is not [] - if self.diagnostics_speak_thread[callerid] and self.diagnostics_speak_thread[callerid].is_alive(): - self.diagnostics_speak_thread[callerid].stop() - return - # make sure that diagnostics_speak_thread is None, when the thread is terminated - if self.diagnostics_speak_thread[callerid] and not self.diagnostics_speak_thread[callerid].is_alive(): - self.diagnostics_speak_thread[callerid] = None - # run new thread - if self.diagnostics_speak_thread[callerid] is None: - self.diagnostics_speak_thread[callerid] = DiagnosticsSpeakThread(error_status) - if __name__ == "__main__": global sound # store error status and time of the error in the latest 10 minites diff --git a/jsk_fetch_robot/jsk_fetch_startup/src/trashbins_pose_estimator.cpp b/jsk_fetch_robot/jsk_fetch_startup/src/trashbins_pose_estimator.cpp new file mode 100644 index 0000000000..0adecd9ffb --- /dev/null +++ b/jsk_fetch_robot/jsk_fetch_startup/src/trashbins_pose_estimator.cpp @@ -0,0 +1,82 @@ +#include + +#include +#include +#include +#include +#include +#include +#include + +class TrashbinsPoseEstimator{ +private: + double _trashbinL, _trashbinW, _trashbinH; // trashbin size param + ros::Subscriber _trashbinHandleSub; + ros::Subscriber _pointCloud; + ros::Publisher _virtualTrashbinContainerPub; + jsk_recognition_msgs::BoundingBoxArray _trashbins; // trashbin object + geometry_msgs::Quaternion defaultOrientation; + +public: + // constructor + TrashbinsPoseEstimator(ros::NodeHandle &_nh, ros::NodeHandle &_pnh){ + _pnh.getParam("trashbin_l", this->_trashbinL); + _pnh.getParam("trashbin_w", this->_trashbinW); + _pnh.getParam("trashbin_h", this->_trashbinH); + this->_trashbinHandleSub = _nh.subscribe("input", 10, &TrashbinsPoseEstimator::DrawVirtualTrashbinContainerCB, this); + this->_virtualTrashbinContainerPub = _nh.advertise("output", 10); + // init default orientation const + this->defaultOrientation.w = 1.0; + this->defaultOrientation.x = 0.0; + this->defaultOrientation.y = 0.0; + this->defaultOrientation.z = 0.0; + }; + // destructor + ~TrashbinsPoseEstimator(){ + ROS_INFO("Killing node..."); + }; + + // draw virtual trashbin container and publish for debugging + void DrawVirtualTrashbinContainerCB(const jsk_recognition_msgs::BoundingBoxArray& msg){ + boost::shared_ptr handles(new jsk_recognition_msgs::BoundingBoxArray), trashbins(new jsk_recognition_msgs::BoundingBoxArray); + boost::shared_ptr handle(new jsk_recognition_msgs::BoundingBox), trashbin(new jsk_recognition_msgs::BoundingBox); + boost::shared_ptr handleCenterPosition(new geometry_msgs::Point), trashbinCenterPosition(new geometry_msgs::Point); + + if (msg.boxes.empty()) { + ROS_DEBUG("No handle candidates"); + } else { + ROS_DEBUG_STREAM(msg.boxes.size() << " handle candidates" << std::endl); + *handles = msg; + for (int i = 0; i < handles->boxes.size(); i++) { + *handle = handles->boxes.at(i); + // decide trashbin center position + *handleCenterPosition = handle->pose.position; + trashbinCenterPosition->x = + handleCenterPosition->x + this->_trashbinL / 2.0; + trashbinCenterPosition->y = handleCenterPosition->y; + trashbinCenterPosition->z = + handleCenterPosition->z - this->_trashbinH / 2.0; + // make BoundingBox trashbin + trashbin->header = handle->header; + trashbin->pose.position = *trashbinCenterPosition; + trashbin->pose.orientation = this->defaultOrientation; + trashbin->dimensions.x = this->_trashbinL; + trashbin->dimensions.y = this->_trashbinW; + trashbin->dimensions.z = this->_trashbinH; + trashbin->label = i; + trashbins->boxes.push_back(*trashbin); + } + trashbins->header = handles->header; + this->_virtualTrashbinContainerPub.publish(*trashbins); + this->_trashbins = *trashbins; + } + } +}; + +int main(int argc, char **argv){ + ros::init(argc, argv, "trashbin_pose_estimator"); + ros::NodeHandle nh; + ros::NodeHandle pnh("~"); + TrashbinsPoseEstimator node = TrashbinsPoseEstimator(nh, pnh); + ros::spin(); +} diff --git a/jsk_fetch_robot/jsk_fetch_startup/supervisor_scripts/jsk-app-scheduler.conf b/jsk_fetch_robot/jsk_fetch_startup/supervisor_scripts/jsk-app-scheduler.conf index 57944374f6..23dcfcb3be 100644 --- a/jsk_fetch_robot/jsk_fetch_startup/supervisor_scripts/jsk-app-scheduler.conf +++ b/jsk_fetch_robot/jsk_fetch_startup/supervisor_scripts/jsk-app-scheduler.conf @@ -1,8 +1,9 @@ [program:jsk-app-scheduler] -command=/bin/bash -c ". /opt/ros/roscore_poststart.bash && . /home/fetch/ros/melodic/devel/setup.bash && rosrun jsk_fetch_startup wait_app_manager.bash && roslaunch app_scheduler app_scheduler.launch yaml_path:=/var/lib/robot/app_schedule.yaml --wait --screen" +command=/bin/bash -c ". /opt/ros/roscore_poststart.bash && . /home/fetch/ros/melodic/devel/setup.bash && if [ -e /var/lib/robot/config.bash ];then . /var/lib/robot/config.bash ;fi && export ROS_MASTER_URI=http://localhost:11311 && rossetclient $NETWORK_DEFAULT_ROS_INTERFACE && rosrun jsk_fetch_startup wait_app_manager.bash && roslaunch app_scheduler app_scheduler.launch yaml_path:=/var/lib/robot/app_schedule.yaml --wait --screen" stopsignal=TERM directory=/home/fetch/ros/melodic -autostart=true +; autostart=true +autostart=false autorestart=false stdout_logfile=/var/log/ros/jsk-app-scheduler.log stderr_logfile=/var/log/ros/jsk-app-scheduler.log diff --git a/jsk_fetch_robot/jsk_fetch_startup/supervisor_scripts/jsk-coral.conf b/jsk_fetch_robot/jsk_fetch_startup/supervisor_scripts/jsk-coral.conf deleted file mode 100644 index d7cf1778cf..0000000000 --- a/jsk_fetch_robot/jsk_fetch_startup/supervisor_scripts/jsk-coral.conf +++ /dev/null @@ -1,11 +0,0 @@ -[program:jsk-coral] -command=/bin/bash -c ". /opt/ros/roscore_poststart.bash && . /home/fetch/ros/coral_ws/devel/setup.bash && roslaunch coral_usb edgetpu_object_detector.launch INPUT_IMAGE:=/head_camera/rgb/image_rect_color model_file:=/home/fetch/.ros/data/coral_usb/mobilenet_v2_ssd_73b2_kitchen_finetuning_20200528.tflite label_file:=/home/fetch/.ros/data/coral_usb/73b2_kitchen_labels.txt --screen --wait" -stopsignal=TERM -directory=/home/fetch/ros/coral_ws -autostart=true -autorestart=false -stdout_logfile=/var/log/ros/jsk-coral.log -stderr_logfile=/var/log/ros/jsk-coral.log -user=fetch -environment=ROSCONSOLE_FORMAT="[${severity}] [${time}] [${node}:${logger}]: ${message}",PYTHONUNBUFFERED=1 -priority=200 diff --git a/jsk_fetch_robot/jsk_fetch_startup/supervisor_scripts/jsk-dialog.conf b/jsk_fetch_robot/jsk_fetch_startup/supervisor_scripts/jsk-dialog.conf index 581d4d8f87..50db8b9ed5 100644 --- a/jsk_fetch_robot/jsk_fetch_startup/supervisor_scripts/jsk-dialog.conf +++ b/jsk_fetch_robot/jsk_fetch_startup/supervisor_scripts/jsk-dialog.conf @@ -1,11 +1,12 @@ [program:jsk-dialog] -command=/bin/bash -c ". /opt/ros/roscore_poststart.bash && . /home/fetch/ros/melodic/devel/setup.bash && rosrun jsk_fetch_startup wait_app_manager.bash && roslaunch dialogflow_task_executive dialogflow_task_executive.launch run_app_manager:=false --wait --screen" +command=/bin/bash -c ". /opt/ros/roscore_poststart.bash && . /home/fetch/ros/melodic/devel/setup.bash && if [ -e /var/lib/robot/config.bash ];then . /var/lib/robot/config.bash ;fi && export ROS_MASTER_URI=http://localhost:11311 && rossetclient $NETWORK_DEFAULT_ROS_INTERFACE && rosrun jsk_fetch_startup wait_app_manager.bash && roslaunch jsk_fetch_startup fetch_dialogflow_task_executive.launch run_app_manager:=false webhook_server:=true hostname:=$(hostname) --wait --screen " stopsignal=TERM directory=/home/fetch/ros/melodic -autostart=true +; autostart=true +autostart=false autorestart=false stdout_logfile=/var/log/ros/jsk-dialog.log stderr_logfile=/var/log/ros/jsk-dialog.log user=fetch -environment=ROSCONSOLE_FORMAT="[${severity}] [${time}] [${node}:${logger}]: ${message}",GOOGLE_APPLICATION_CREDENTIALS=/var/lib/robot/dialogflow/JSK-Fetch-a384d3498680.json,DIALOGFLOW_PROJECT_ID=fetch-kiedno,PYTHONUNBUFFERED=1 +environment=ROSCONSOLE_FORMAT="[${severity}] [${time}] [${node}:${logger}]: ${message}",GOOGLE_APPLICATION_CREDENTIALS=/var/lib/robot/dialogflow/fetch-credential.json,DIALOGFLOW_PROJECT_ID=fetch-kiedno,PYTHONUNBUFFERED=1 priority=200 diff --git a/jsk_fetch_robot/jsk_fetch_startup/supervisor_scripts/jsk-dstat.conf b/jsk_fetch_robot/jsk_fetch_startup/supervisor_scripts/jsk-dstat.conf new file mode 100644 index 0000000000..4fcf56a3e3 --- /dev/null +++ b/jsk_fetch_robot/jsk_fetch_startup/supervisor_scripts/jsk-dstat.conf @@ -0,0 +1,11 @@ +; Install dstat +; sudo apt install dstat +[program:jsk-dstat] +command=/bin/bash -c ". /opt/ros/roscore_poststart.bash && . /home/fetch/ros/melodic/devel/setup.bash && rosrun jsk_fetch_startup dstat.bash" +stopsignal=TERM +autostart=true +autorestart=false +stdout_logfile=/var/log/ros/jsk-dstat.log +stderr_logfile=/var/log/ros/jsk-dstat.log +user=root +priority=1 diff --git a/jsk_fetch_robot/jsk_fetch_startup/supervisor_scripts/jsk-fetch-startup-outside.conf b/jsk_fetch_robot/jsk_fetch_startup/supervisor_scripts/jsk-fetch-startup-outside.conf new file mode 100644 index 0000000000..463ddf138e --- /dev/null +++ b/jsk_fetch_robot/jsk_fetch_startup/supervisor_scripts/jsk-fetch-startup-outside.conf @@ -0,0 +1,11 @@ +[program:jsk-fetch-startup-outside] +command=/bin/bash -c ". /opt/ros/roscore_poststart.bash && . /home/fetch/ros/melodic/devel/setup.bash && if [ -e /var/lib/robot/config_outside.bash ];then . /var/lib/robot/config_outside.bash ;fi && export ROS_MASTER_URI=http://localhost:11311 && rossetclient $NETWORK_DEFAULT_ROS_INTERFACE && rosrun jsk_fetch_startup setup_audio.bash && roslaunch jsk_fetch_startup fetch_bringup.launch hostname:=$(hostname) boot_sound:=true default_speaker:=$DEFAULT_SPEAKER default_english_speaker:=$DEFAULT_ENGLISH_SPEAKER default_warning_speaker:=$DEFAULT_WARNING_SPEAKER network_interface:=$NETWORK_DEFAULT_WIFI_INTERFACE --wait" +stopsignal=TERM +directory=/home/fetch/ros/melodic +autostart=false +autorestart=false +stdout_logfile=/var/log/ros/jsk-fetch-startup.log +stderr_logfile=/var/log/ros/jsk-fetch-startup.log +user=fetch +environment=ROSCONSOLE_FORMAT="[${severity}] [${time}] [${node}:${logger}]: ${message}",AUDIO_DEVICE="alsa_output.usb-1130_USB_AUDIO-00.analog-stereo",PYTHONUNBUFFERED=1 +priority=100 diff --git a/jsk_fetch_robot/jsk_fetch_startup/supervisor_scripts/jsk-fetch-startup.conf b/jsk_fetch_robot/jsk_fetch_startup/supervisor_scripts/jsk-fetch-startup.conf index 5292717154..69eb29af34 100644 --- a/jsk_fetch_robot/jsk_fetch_startup/supervisor_scripts/jsk-fetch-startup.conf +++ b/jsk_fetch_robot/jsk_fetch_startup/supervisor_scripts/jsk-fetch-startup.conf @@ -1,5 +1,5 @@ [program:jsk-fetch-startup] -command=/bin/bash -c ". /opt/ros/roscore_poststart.bash && . /home/fetch/ros/melodic/devel/setup.bash && rosrun jsk_fetch_startup setup_audio.bash && roslaunch jsk_fetch_startup fetch_bringup.launch hostname:=$(hostname) boot_sound:=true use_voice_text:=false --wait" +command=/bin/bash -c ". /opt/ros/roscore_poststart.bash && . /home/fetch/ros/melodic/devel/setup.bash && if [ -e /var/lib/robot/config.bash ];then . /var/lib/robot/config.bash ;fi && export ROS_MASTER_URI=http://localhost:11311 && rossetclient $NETWORK_DEFAULT_ROS_INTERFACE && rosrun jsk_fetch_startup setup_audio.bash && roslaunch jsk_fetch_startup fetch_bringup.launch hostname:=$(hostname) --wait" stopsignal=TERM directory=/home/fetch/ros/melodic autostart=true diff --git a/jsk_fetch_robot/jsk_fetch_startup/supervisor_scripts/jsk-gdrive.conf b/jsk_fetch_robot/jsk_fetch_startup/supervisor_scripts/jsk-gdrive.conf index a79cc1deb3..dd8e281cda 100644 --- a/jsk_fetch_robot/jsk_fetch_startup/supervisor_scripts/jsk-gdrive.conf +++ b/jsk_fetch_robot/jsk_fetch_startup/supervisor_scripts/jsk-gdrive.conf @@ -1,8 +1,9 @@ [program:jsk-gdrive] -command=/bin/bash -c ". /opt/ros/roscore_poststart.bash && . /home/fetch/ros/melodic/devel/setup.bash && roslaunch gdrive_ros gdrive_server.launch --wait --screen" +command=/bin/bash -c ". /opt/ros/roscore_poststart.bash && . /home/fetch/ros/melodic/devel/setup.bash && if [ -e /var/lib/robot/config.bash ];then . /var/lib/robot/config.bash ;fi && export ROS_MASTER_URI=http://localhost:11311 && rossetclient $NETWORK_DEFAULT_ROS_INTERFACE && roslaunch gdrive_ros gdrive_server.launch --wait --screen respawn:=true" stopsignal=TERM directory=/home/fetch/ros/melodic -autostart=true +; autostart=true +autostart=false autorestart=false stdout_logfile=/var/log/ros/jsk-gdrive.log stderr_logfile=/var/log/ros/jsk-gdrive.log diff --git a/jsk_fetch_robot/jsk_fetch_startup/supervisor_scripts/jsk-log-wifi.conf b/jsk_fetch_robot/jsk_fetch_startup/supervisor_scripts/jsk-log-wifi.conf index cdb54b8638..a9723545b8 100644 --- a/jsk_fetch_robot/jsk_fetch_startup/supervisor_scripts/jsk-log-wifi.conf +++ b/jsk_fetch_robot/jsk_fetch_startup/supervisor_scripts/jsk-log-wifi.conf @@ -1,5 +1,5 @@ [program:jsk-log-wifi] -command=/bin/bash -c ". /home/fetch/ros/melodic/devel/setup.bash && rosrun jsk_fetch_startup log-wifi-link.sh" +command=/bin/bash -c ". /home/fetch/ros/melodic/devel/setup.bash && if [ -e /var/lib/robot/config.bash ];then . /var/lib/robot/config.bash ;fi && rosrun jsk_fetch_startup log-wifi-link.sh -I $NETWORK_DEFAULT_WIFI_INTERFACE" stopsignal=TERM autostart=true autorestart=false diff --git a/jsk_fetch_robot/jsk_fetch_startup/supervisor_scripts/jsk-network-monitor-outside.conf b/jsk_fetch_robot/jsk_fetch_startup/supervisor_scripts/jsk-network-monitor-outside.conf new file mode 100644 index 0000000000..2dbd597ae2 --- /dev/null +++ b/jsk_fetch_robot/jsk_fetch_startup/supervisor_scripts/jsk-network-monitor-outside.conf @@ -0,0 +1,10 @@ +[program:jsk-network-monitor-outside] +command=/bin/bash -c ". /home/fetch/ros/melodic/devel/setup.bash && if [ -e /var/lib/robot/config_outside.bash ];then . /var/lib/robot/config_outside.bash ;fi && export ROS_MASTER_URI=http://localhost:11311 && rossetclient $NETWORK_DEFAULT_ROS_INTERFACE && rosrun jsk_fetch_startup network_monitor.py --interface $NETWORK_DEFAULT_WIFI_INTERFACE --profile $NETWORK_DEFAULT_PROFILE_ID" +stopsignal=TERM +autostart=false +autorestart=false +stdout_logfile=/var/log/ros/jsk-network-monitor.log +stderr_logfile=/var/log/ros/jsk-network-monitor.log +user=root +environment=ROSCONSOLE_FORMAT="[${severity}] [${time}] [${node}:${logger}]: ${message}",NETWORK_MONITOR_HOSTNAMES="google.com",PYTHONUNBUFFERED=1 +priority=200 diff --git a/jsk_fetch_robot/jsk_fetch_startup/supervisor_scripts/jsk-network-monitor.conf b/jsk_fetch_robot/jsk_fetch_startup/supervisor_scripts/jsk-network-monitor.conf index bf05c87a6b..30e1578f91 100644 --- a/jsk_fetch_robot/jsk_fetch_startup/supervisor_scripts/jsk-network-monitor.conf +++ b/jsk_fetch_robot/jsk_fetch_startup/supervisor_scripts/jsk-network-monitor.conf @@ -1,5 +1,5 @@ [program:jsk-network-monitor] -command=/bin/bash -c ". /home/fetch/ros/melodic/devel/setup.bash && rosrun jsk_fetch_startup network_monitor.py" +command=/bin/bash -c ". /home/fetch/ros/melodic/devel/setup.bash && if [ -e /var/lib/robot/config.bash ];then . /var/lib/robot/config.bash ;fi && export ROS_MASTER_URI=http://localhost:11311 && rossetclient $NETWORK_DEFAULT_ROS_INTERFACE && rosrun jsk_fetch_startup network_monitor.py --interface $NETWORK_DEFAULT_WIFI_INTERFACE --profile $NETWORK_DEFAULT_PROFILE_ID" stopsignal=TERM autostart=true autorestart=false diff --git a/jsk_fetch_robot/jsk_fetch_startup/supervisor_scripts/jsk-rfcomm-bind.conf b/jsk_fetch_robot/jsk_fetch_startup/supervisor_scripts/jsk-rfcomm-bind.conf index 16f10c4710..b80954f2ab 100644 --- a/jsk_fetch_robot/jsk_fetch_startup/supervisor_scripts/jsk-rfcomm-bind.conf +++ b/jsk_fetch_robot/jsk_fetch_startup/supervisor_scripts/jsk-rfcomm-bind.conf @@ -1,5 +1,5 @@ [program:jsk-rfcomm-bind] -command=/bin/bash -c ". /opt/ros/roscore_poststart.bash && . /home/fetch/ros/melodic/devel/setup.bash && roslaunch jsk_robot_startup rfcomm_bind.launch --wait" +command=/bin/bash -c ". /opt/ros/roscore_poststart.bash && . /home/fetch/ros/melodic/devel/setup.bash && if [ -e /var/lib/robot/config.bash ];then . /var/lib/robot/config.bash ;fi && export ROS_MASTER_URI=http://localhost:11311 && rossetclient $NETWORK_DEFAULT_ROS_INTERFACE && roslaunch jsk_robot_startup rfcomm_bind.launch --wait" stopsignal=TERM directory=/home/fetch/ros/melodic diff --git a/jsk_fetch_robot/jsk_fetch_startup/supervisor_scripts/jsk-shutdown.conf b/jsk_fetch_robot/jsk_fetch_startup/supervisor_scripts/jsk-shutdown.conf index bdc0bd78eb..37feca3d06 100644 --- a/jsk_fetch_robot/jsk_fetch_startup/supervisor_scripts/jsk-shutdown.conf +++ b/jsk_fetch_robot/jsk_fetch_startup/supervisor_scripts/jsk-shutdown.conf @@ -1,5 +1,5 @@ [program:jsk-shutdown] -command=/bin/bash -c ". /opt/ros/roscore_poststart.bash && . /home/fetch/ros/melodic/devel/setup.bash && rosrun jsk_robot_startup shutdown.py --wait" +command=/bin/bash -c ". /opt/ros/roscore_poststart.bash && . /home/fetch/ros/melodic/devel/setup.bash && if [ -e /var/lib/robot/config.bash ];then . /var/lib/robot/config.bash ;fi && export ROS_MASTER_URI=http://localhost:11311 && rossetclient $NETWORK_DEFAULT_ROS_INTERFACE && rosrun jsk_robot_startup shutdown.py ~input:=/battery_state _input_condition:='m.is_charging is False' --wait" stopsignal=TERM directory=/home/fetch/ros/melodic diff --git a/jsk_fetch_robot/jsk_fetch_startup/supervisor_scripts/robot-outside.conf b/jsk_fetch_robot/jsk_fetch_startup/supervisor_scripts/robot-outside.conf new file mode 100644 index 0000000000..90f32f5811 --- /dev/null +++ b/jsk_fetch_robot/jsk_fetch_startup/supervisor_scripts/robot-outside.conf @@ -0,0 +1,11 @@ +[program:robot-outside] +command=/bin/bash -c ". /opt/ros/roscore_poststart.bash && . /home/fetch/ros/melodic/devel/setup.bash && if [ -e /var/lib/robot/config_outside.bash ];then . /var/lib/robot/config_outside.bash ;fi && export ROS_MASTER_URI=http://localhost:11311 && rossetclient $NETWORK_DEFAULT_ROS_INTERFACE && rosrun jsk_fetch_startup link_calibration_files.bash && roslaunch jsk_fetch_startup fetch.launch launch_teleop:=false --wait --screen" +stopsignal=TERM +directory=/home/fetch/ros/melodic +autostart=false +autorestart=unexpected +stdout_logfile=/var/log/ros/robot.log +stderr_logfile=/var/log/ros/robot.log +user=ros +environment=ROS_LOG_DIR=/var/log/ros,ROSCONSOLE_FORMAT="[${severity}] [${time}] [${node}:${logger}]: ${message}",FETCH_CALIBRATED_URDF=/etc/ros/melodic/calibrated_2020_12_04_02_08_34.urdf,FETCH_CALIBRATED_RGB=/etc/ros/melodic/rgb_2020_12_04_02_08_34.yaml,FETCH_CALIBRATED_DEPTH=/etc/ros/melodic/depth_2020_12_04_02_08_34.yaml,PYTHONUNBUFFERED=1 +priority=10 diff --git a/jsk_fetch_robot/jsk_fetch_startup/supervisor_scripts/robot.conf b/jsk_fetch_robot/jsk_fetch_startup/supervisor_scripts/robot.conf index d265c59b0d..0b33af1409 100644 --- a/jsk_fetch_robot/jsk_fetch_startup/supervisor_scripts/robot.conf +++ b/jsk_fetch_robot/jsk_fetch_startup/supervisor_scripts/robot.conf @@ -1,5 +1,5 @@ [program:robot] -command=/bin/bash -c ". /opt/ros/roscore_poststart.bash && . /home/fetch/ros/melodic/devel/setup.bash && rosrun jsk_fetch_startup link_calibration_files.bash && roslaunch jsk_fetch_startup fetch.launch launch_teleop:=false --wait --screen" +command=/bin/bash -c ". /opt/ros/roscore_poststart.bash && . /home/fetch/ros/melodic/devel/setup.bash && if [ -e /var/lib/robot/config.bash ];then . /var/lib/robot/config.bash ;fi && export ROS_MASTER_URI=http://localhost:11311 && rossetclient $NETWORK_DEFAULT_ROS_INTERFACE && rosrun jsk_fetch_startup link_calibration_files.bash && roslaunch jsk_fetch_startup fetch.launch launch_teleop:=false --wait --screen" stopsignal=TERM directory=/home/fetch/ros/melodic autostart=true diff --git a/jsk_fetch_robot/jsk_fetch_startup/tmuxinator_yaml/log.yml b/jsk_fetch_robot/jsk_fetch_startup/tmuxinator_yaml/log.yml index 5f2e1d51bf..85062f575d 100644 --- a/jsk_fetch_robot/jsk_fetch_startup/tmuxinator_yaml/log.yml +++ b/jsk_fetch_robot/jsk_fetch_startup/tmuxinator_yaml/log.yml @@ -36,9 +36,14 @@ windows: - jsk-fetch-startup: tail -f -n 1000 /var/log/ros/jsk-fetch-startup.log - jsk-network-monitor: tail -f -n 1000 /var/log/ros/jsk-network-monitor.log - jsk-log-wifi: tail -f -n 1000 /var/log/ros/jsk-log-wifi.log - - jsk-app-scheduler: tail -f -n 1000 /var/log/ros/jsk-app-scheduler.log - - jsk-coral: tail -f -n 1000 /var/log/ros/jsk-coral.log - - jsk-dialog: tail -f -n 1000 /var/log/ros/jsk-dialog.log - - jsk-gdrive: tail -f -n 1000 /var/log/ros/jsk-gdrive.log - - jsk-shutdown: tail -f -n 1000 /var/log/ros/jsk-shutdown.log - - jsk-rfcomm-bind: tail -f -n 1000 /var/log/ros/jsk-rfcomm-bind.log + - jsk-dstat: tail -f -n 1000 /var/log/ros/jsk-dstat.log + # - jsk-app-scheduler: tail -f -n 1000 /var/log/ros/jsk-app-scheduler.log + # - jsk-coral: tail -f -n 1000 /var/log/ros/jsk-coral.log + # - jsk-object-detector: tail -f -n 1000 /var/log/ros/jsk-object-detector.log + # - jsk-panorama-object-detector: tail -f -n 1000 /var/log/ros/jsk-panorama-object-detector.log + # - jsk-human-pose-estimator: tail -f -n 1000 /var/log/ros/jsk-human-pose-estimator.log + # - jsk-panorama-human-pose-estimator: tail -f -n 1000 /var/log/ros/jsk-panorama-human-pose-estimator.log + # - jsk-dialog: tail -f -n 1000 /var/log/ros/jsk-dialog.log + # - jsk-gdrive: tail -f -n 1000 /var/log/ros/jsk-gdrive.log + # - jsk-shutdown: tail -f -n 1000 /var/log/ros/jsk-shutdown.log + # - jsk-rfcomm-bind: tail -f -n 1000 /var/log/ros/jsk-rfcomm-bind.log diff --git a/jsk_robot_common/jsk_robot_startup/apps/robot_apps.installed b/jsk_robot_common/jsk_robot_startup/apps/robot_apps.installed index e142d9282c..378c08693f 100644 --- a/jsk_robot_common/jsk_robot_startup/apps/robot_apps.installed +++ b/jsk_robot_common/jsk_robot_startup/apps/robot_apps.installed @@ -3,3 +3,7 @@ apps: display: Personal use - app: jsk_robot_startup/check_use_sim_time display: Check /use_sim_time param + - app: jsk_robot_startup/roseus_resume_interrupt + display: Interrupt + - app: jsk_robot_startup/roseus_resume_resume + display: Resume diff --git a/jsk_robot_common/jsk_robot_startup/apps/roseus_resume_interrupt/roseus_resume_interrupt.app b/jsk_robot_common/jsk_robot_startup/apps/roseus_resume_interrupt/roseus_resume_interrupt.app new file mode 100644 index 0000000000..d6ea2dad0f --- /dev/null +++ b/jsk_robot_common/jsk_robot_startup/apps/roseus_resume_interrupt/roseus_resume_interrupt.app @@ -0,0 +1,6 @@ +display: Interrupt +platform: all +run: rostopic/rostopic +run_args: "pub -1 /roseus_resume/interrupt std_msgs/Empty" +interface: jsk_robot_startup/roseus_resume_interrupt.interface +icon: jsk_robot_startup/roseus_resume_interrupt.png diff --git a/jsk_robot_common/jsk_robot_startup/apps/roseus_resume_interrupt/roseus_resume_interrupt.interface b/jsk_robot_common/jsk_robot_startup/apps/roseus_resume_interrupt/roseus_resume_interrupt.interface new file mode 100644 index 0000000000..044105d644 --- /dev/null +++ b/jsk_robot_common/jsk_robot_startup/apps/roseus_resume_interrupt/roseus_resume_interrupt.interface @@ -0,0 +1,2 @@ +published_topics: {} +subscribed_topics: {} diff --git a/jsk_robot_common/jsk_robot_startup/apps/roseus_resume_interrupt/roseus_resume_interrupt.png b/jsk_robot_common/jsk_robot_startup/apps/roseus_resume_interrupt/roseus_resume_interrupt.png new file mode 100644 index 0000000000..352d08ee47 Binary files /dev/null and b/jsk_robot_common/jsk_robot_startup/apps/roseus_resume_interrupt/roseus_resume_interrupt.png differ diff --git a/jsk_robot_common/jsk_robot_startup/apps/roseus_resume_resume/roseus_resume_resume.app b/jsk_robot_common/jsk_robot_startup/apps/roseus_resume_resume/roseus_resume_resume.app new file mode 100644 index 0000000000..c21b0d3a49 --- /dev/null +++ b/jsk_robot_common/jsk_robot_startup/apps/roseus_resume_resume/roseus_resume_resume.app @@ -0,0 +1,6 @@ +display: Resume +platform: all +run: rostopic/rostopic +run_args: "pub -1 /roseus_resume/resume std_msgs/Empty" +interface: jsk_robot_startup/roseus_resume_resume.interface +icon: jsk_robot_startup/roseus_resume_resume.png diff --git a/jsk_robot_common/jsk_robot_startup/apps/roseus_resume_resume/roseus_resume_resume.interface b/jsk_robot_common/jsk_robot_startup/apps/roseus_resume_resume/roseus_resume_resume.interface new file mode 100644 index 0000000000..044105d644 --- /dev/null +++ b/jsk_robot_common/jsk_robot_startup/apps/roseus_resume_resume/roseus_resume_resume.interface @@ -0,0 +1,2 @@ +published_topics: {} +subscribed_topics: {} diff --git a/jsk_robot_common/jsk_robot_startup/apps/roseus_resume_resume/roseus_resume_resume.png b/jsk_robot_common/jsk_robot_startup/apps/roseus_resume_resume/roseus_resume_resume.png new file mode 100644 index 0000000000..235869778e Binary files /dev/null and b/jsk_robot_common/jsk_robot_startup/apps/roseus_resume_resume/roseus_resume_resume.png differ diff --git a/jsk_robot_common/jsk_robot_startup/lifelog/app_manager.launch b/jsk_robot_common/jsk_robot_startup/lifelog/app_manager.launch index f1f90dc1e3..1e7a5be105 100644 --- a/jsk_robot_common/jsk_robot_startup/lifelog/app_manager.launch +++ b/jsk_robot_common/jsk_robot_startup/lifelog/app_manager.launch @@ -2,6 +2,8 @@ + + @@ -44,6 +46,7 @@ delay_between_messages: 0 max_message_size: None fragment_timeout: 600 + unregister_timeout: 100000000 + + diff --git a/jsk_robot_common/jsk_robot_startup/lifelog/mongodb.launch b/jsk_robot_common/jsk_robot_startup/lifelog/mongodb.launch index 13c62d42f4..e7b6b684d8 100644 --- a/jsk_robot_common/jsk_robot_startup/lifelog/mongodb.launch +++ b/jsk_robot_common/jsk_robot_startup/lifelog/mongodb.launch @@ -34,6 +34,7 @@ + diff --git a/jsk_robot_common/jsk_robot_startup/lifelog/tweet.launch b/jsk_robot_common/jsk_robot_startup/lifelog/tweet.launch index b22b0d066c..827bef6832 100644 --- a/jsk_robot_common/jsk_robot_startup/lifelog/tweet.launch +++ b/jsk_robot_common/jsk_robot_startup/lifelog/tweet.launch @@ -27,12 +27,21 @@ output="$(arg output)" respawn="true" > + + + account_info: $(arg account_info) + + + + +